From 49343e7d0ecdb377b74841035a0ae516e3cedea7 Mon Sep 17 00:00:00 2001 From: Sagar Batchu Date: Tue, 19 May 2026 07:21:23 -0700 Subject: [PATCH 1/8] feat(risk): add listRiskResultsForAgent for AI Insights with redacted match Adds a redacted variant of risk.results.list designed for MCP / AI assistant consumption. The raw `match` field is replaced with `match_redacted`, an opaque token of the form ``, where the sha prefix is deterministic so agents can dedupe identical secrets across chats without ever seeing secret content. `shadow_mcp` findings pass `match` through verbatim because the value is a non-sensitive server identifier already shown unmasked in the dashboard. Also wires `` overrides into the Security Overview and Policy Center pages with risk-aware suggestions, and extends the Insights system prompt with a hard rule against echoing `match_redacted` values. Co-Authored-By: Claude Opus 4.7 (1M context) --- .changeset/risk-results-for-agent.md | 10 + .speakeasy/out.openapi.yaml | 1859 +++++--------- .speakeasy/workflow.lock | 10 +- .../src/components/insights-sidebar.tsx | 10 +- .../src/pages/security/PolicyCenter.tsx | 43 + .../src/pages/security/SecurityOverview.tsx | 49 + client/sdk/.speakeasy/gen.lock | 475 ++-- client/sdk/README.md | 3 + .../sdk/src/funcs/riskResultsListForAgent.ts | 236 ++ client/sdk/src/models/components/index.ts | 11 +- .../listriskresultsforagentresult.ts | 56 + .../models/components/riskresultredacted.ts | 123 + client/sdk/src/models/operations/index.ts | 1 + .../operations/listriskresultsforagent.ts | 205 ++ client/sdk/src/react-query/index.ts | 1 + .../riskListResultsForAgent.core.ts | 94 + .../react-query/riskListResultsForAgent.ts | 162 ++ client/sdk/src/sdk/results.ts | 20 + server/design/risk/design.go | 47 + server/design/shared/risk.go | 41 + server/gen/http/cli/gram/cli.go | 700 +----- server/gen/http/openapi3.json | 2 +- server/gen/http/openapi3.yaml | 2203 +++-------------- server/gen/http/risk/client/cli.go | 81 + server/gen/http/risk/client/client.go | 29 + server/gen/http/risk/client/encode_decode.go | 283 +++ server/gen/http/risk/client/paths.go | 5 + server/gen/http/risk/client/types.go | 819 +++++- server/gen/http/risk/server/encode_decode.go | 295 +++ server/gen/http/risk/server/paths.go | 5 + server/gen/http/risk/server/server.go | 58 + server/gen/http/risk/server/types.go | 429 ++++ server/gen/risk/client.go | 102 +- server/gen/risk/endpoints.go | 62 + server/gen/risk/service.go | 237 +- server/gen/types/risk_result_redacted.go | 47 + server/internal/risk/impl.go | 76 + server/internal/risk/results_test.go | 130 + 38 files changed, 4680 insertions(+), 4339 deletions(-) create mode 100644 .changeset/risk-results-for-agent.md create mode 100644 client/sdk/src/funcs/riskResultsListForAgent.ts create mode 100644 client/sdk/src/models/components/listriskresultsforagentresult.ts create mode 100644 client/sdk/src/models/components/riskresultredacted.ts create mode 100644 client/sdk/src/models/operations/listriskresultsforagent.ts create mode 100644 client/sdk/src/react-query/riskListResultsForAgent.core.ts create mode 100644 client/sdk/src/react-query/riskListResultsForAgent.ts create mode 100644 server/gen/types/risk_result_redacted.go diff --git a/.changeset/risk-results-for-agent.md b/.changeset/risk-results-for-agent.md new file mode 100644 index 0000000000..662d21c52c --- /dev/null +++ b/.changeset/risk-results-for-agent.md @@ -0,0 +1,10 @@ +--- +"server": minor +"dashboard": minor +--- + +Adds `risk.results.listForAgent` — a redacted variant of `risk.results.list` for AI assistant / MCP consumption. The new endpoint returns the same fields as `listRiskResults` but replaces the `match` field with `match_redacted`, an opaque token of the form `` where `N` is the byte length and `XXXXXXXX` is the first 8 hex characters of `sha256(match)`. Identical secrets produce identical fingerprints so agents can dedupe leak counts without ever seeing secret content. + +`shadow_mcp` findings pass `match` through verbatim because the value is a server URL or stdio command identifier (already shown unmasked in the dashboard), and exact byte positions are coarsened to a single `position_known` boolean to remove reconstruction signals. + +The dashboard's AI Insights sidebar gains risk-aware suggestions on the Security Overview and Policy Center pages, plus a system-prompt rule that bars the assistant from echoing `match_redacted` values verbatim. diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index db22ba17d5..61b65e7537 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -1295,10 +1295,10 @@ paths: x-speakeasy-name-override: resolveChallenge x-speakeasy-react-hook: name: ResolveChallenge - /rpc/access.updateMemberRoles: + /rpc/access.updateMemberRole: put: - description: Update a team member's role assignments. - operationId: updateMemberRoles + description: Change a team member's role assignment. + operationId: updateMemberRole parameters: - allowEmptyValue: true description: API Key header @@ -1318,7 +1318,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateMemberRolesForm' + $ref: '#/components/schemas/UpdateMemberRoleForm' required: true responses: "200": @@ -1385,12 +1385,12 @@ paths: - apikey_header_Gram-Key: [] - session_header_Gram-Session: [] - {} - summary: updateMemberRoles access + summary: updateMemberRole access tags: - access - x-speakeasy-name-override: updateMemberRoles + x-speakeasy-name-override: updateMemberRole x-speakeasy-react-hook: - name: UpdateMemberRoles + name: UpdateMemberRole /rpc/access.updateRole: put: description: Update an existing custom role. @@ -4795,14 +4795,6 @@ paths: schema: description: Filter by external user ID type: string - - allowEmptyValue: true - description: Filter to chats produced by this assistant - in: query - name: assistant_id - schema: - description: Filter to chats produced by this assistant - format: uuid - type: string - allowEmptyValue: true description: Filter by resolution status in: query @@ -4810,17 +4802,6 @@ paths: schema: description: Filter by resolution status type: string - - allowEmptyValue: true - description: 'Filter by whether chat has risk findings: ''true'', ''false'', or empty for no filter.' - in: query - name: has_risk - schema: - description: 'Filter by whether chat has risk findings: ''true'', ''false'', or empty for no filter.' - enum: - - "" - - "true" - - "false" - type: string - allowEmptyValue: true description: Filter chats created after this timestamp (ISO 8601) in: query @@ -7048,10 +7029,10 @@ paths: x-speakeasy-name-override: getDomain x-speakeasy-react-hook: name: getDomain - /rpc/domain.listMcpEndpoints: - get: - description: List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through. - operationId: listCustomDomainMcpEndpoints + /rpc/domain.register: + post: + description: Create a custom domain for an organization + operationId: registerDomain parameters: - allowEmptyValue: true description: Session header @@ -7060,12 +7041,14 @@ paths: schema: description: Session header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateDomainRequestBody' + required: true responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/ListCustomDomainMcpEndpointsResult' description: OK response. "400": content: @@ -7124,17 +7107,27 @@ paths: security: - session_header_Gram-Session: [] - {} - summary: listMcpEndpoints domains + summary: createDomain domains tags: - domains - x-speakeasy-name-override: listMcpEndpoints + x-speakeasy-name-override: registerDomain x-speakeasy-react-hook: - name: CustomDomainMcpEndpoints - /rpc/domain.register: + name: registerDomain + /rpc/environments.clone: post: - description: Create a custom domain for an organization - operationId: registerDomain + description: Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation. + operationId: cloneEnvironment parameters: + - allowEmptyValue: true + description: The slug of the source environment to clone + in: query + name: slug + required: true + schema: + description: A short url-friendly label that uniquely identifies a resource. + maxLength: 40 + pattern: ^[a-z0-9_-]{1,128}$ + type: string - allowEmptyValue: true description: Session header in: header @@ -7142,14 +7135,25 @@ paths: schema: description: Session header type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/CreateDomainRequestBody' + $ref: '#/components/schemas/CloneEnvironmentRequestBody' required: true responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/Environment' description: OK response. "400": content: @@ -7206,29 +7210,20 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - session_header_Gram-Session: [] + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] - {} - summary: createDomain domains + summary: cloneEnvironment environments tags: - - domains - x-speakeasy-name-override: registerDomain + - environments + x-speakeasy-name-override: clone x-speakeasy-react-hook: - name: registerDomain - /rpc/environments.clone: + name: CloneEnvironment + /rpc/environments.create: post: - description: Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation. - operationId: cloneEnvironment + description: Create a new environment + operationId: createEnvironment parameters: - - allowEmptyValue: true - description: The slug of the source environment to clone - in: query - name: slug - required: true - schema: - description: A short url-friendly label that uniquely identifies a resource. - maxLength: 40 - pattern: ^[a-z0-9_-]{1,128}$ - type: string - allowEmptyValue: true description: Session header in: header @@ -7247,7 +7242,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloneEnvironmentRequestBody' + $ref: '#/components/schemas/CreateEnvironmentForm' required: true responses: "200": @@ -7314,17 +7309,27 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: cloneEnvironment environments + summary: createEnvironment environments tags: - environments - x-speakeasy-name-override: clone + x-speakeasy-name-override: create x-speakeasy-react-hook: - name: CloneEnvironment - /rpc/environments.create: - post: - description: Create a new environment - operationId: createEnvironment + name: CreateEnvironment + /rpc/environments.delete: + delete: + description: Delete an environment + operationId: deleteEnvironment parameters: + - allowEmptyValue: true + description: The slug of the environment to delete + in: query + name: slug + required: true + schema: + description: A short url-friendly label that uniquely identifies a resource. + maxLength: 40 + pattern: ^[a-z0-9_-]{1,128}$ + type: string - allowEmptyValue: true description: Session header in: header @@ -7339,18 +7344,113 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateEnvironmentForm' - required: true responses: "200": + description: OK response. + "400": content: application/json: schema: - $ref: '#/components/schemas/Environment' + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + - {} + summary: deleteEnvironment environments + tags: + - environments + x-speakeasy-name-override: deleteBySlug + x-speakeasy-react-hook: + name: DeleteEnvironment + /rpc/environments.deleteSourceLink: + delete: + description: Delete a link between a source and an environment + operationId: deleteSourceEnvironmentLink + parameters: + - allowEmptyValue: true + description: The kind of source (http or function) + in: query + name: source_kind + required: true + schema: + description: The kind of source that can be linked to an environment + enum: + - http + - function + type: string + - allowEmptyValue: true + description: The slug of the source + in: query + name: source_slug + required: true + schema: + description: The slug of the source + type: string + - allowEmptyValue: true + description: Session header + in: header + name: Gram-Session + schema: + description: Session header + type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + responses: + "200": description: OK response. "400": content: @@ -7410,26 +7510,25 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: createEnvironment environments + summary: deleteSourceEnvironmentLink environments tags: - environments - x-speakeasy-name-override: create + x-speakeasy-name-override: deleteSourceLink x-speakeasy-react-hook: - name: CreateEnvironment - /rpc/environments.delete: + name: DeleteSourceEnvironmentLink + /rpc/environments.deleteToolsetLink: delete: - description: Delete an environment - operationId: deleteEnvironment + description: Delete a link between a toolset and an environment + operationId: deleteToolsetEnvironmentLink parameters: - allowEmptyValue: true - description: The slug of the environment to delete + description: The ID of the toolset in: query - name: slug + name: toolset_id required: true schema: - description: A short url-friendly label that uniquely identifies a resource. - maxLength: 40 - pattern: ^[a-z0-9_-]{1,128}$ + description: The ID of the toolset + format: uuid type: string - allowEmptyValue: true description: Session header @@ -7506,16 +7605,16 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: deleteEnvironment environments + summary: deleteToolsetEnvironmentLink environments tags: - environments - x-speakeasy-name-override: deleteBySlug + x-speakeasy-name-override: deleteToolsetLink x-speakeasy-react-hook: - name: DeleteEnvironment - /rpc/environments.deleteSourceLink: - delete: - description: Delete a link between a source and an environment - operationId: deleteSourceEnvironmentLink + name: DeleteToolsetEnvironmentLink + /rpc/environments.getSourceEnvironment: + get: + description: Get the environment linked to a source + operationId: getSourceEnvironment parameters: - allowEmptyValue: true description: The kind of source (http or function) @@ -7552,210 +7651,10 @@ paths: type: string responses: "200": - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - - {} - summary: deleteSourceEnvironmentLink environments - tags: - - environments - x-speakeasy-name-override: deleteSourceLink - x-speakeasy-react-hook: - name: DeleteSourceEnvironmentLink - /rpc/environments.deleteToolsetLink: - delete: - description: Delete a link between a toolset and an environment - operationId: deleteToolsetEnvironmentLink - parameters: - - allowEmptyValue: true - description: The ID of the toolset - in: query - name: toolset_id - required: true - schema: - description: The ID of the toolset - format: uuid - type: string - - allowEmptyValue: true - description: Session header - in: header - name: Gram-Session - schema: - description: Session header - type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - responses: - "200": - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - - {} - summary: deleteToolsetEnvironmentLink environments - tags: - - environments - x-speakeasy-name-override: deleteToolsetLink - x-speakeasy-react-hook: - name: DeleteToolsetEnvironmentLink - /rpc/environments.getSourceEnvironment: - get: - description: Get the environment linked to a source - operationId: getSourceEnvironment - parameters: - - allowEmptyValue: true - description: The kind of source (http or function) - in: query - name: source_kind - required: true - schema: - description: The kind of source that can be linked to an environment - enum: - - http - - function - type: string - - allowEmptyValue: true - description: The slug of the source - in: query - name: source_slug - required: true - schema: - description: The slug of the source - type: string - - allowEmptyValue: true - description: Session header - in: header - name: Gram-Session - schema: - description: Session header - type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - responses: - "200": - content: - application/json: - schema: - $ref: '#/components/schemas/Environment' + content: + application/json: + schema: + $ref: '#/components/schemas/Environment' description: OK response. "400": content: @@ -18371,11 +18270,27 @@ paths: x-speakeasy-name-override: get x-speakeasy-react-hook: name: RiskCapabilities - /rpc/risk.categories: + /rpc/risk.overview.get: get: - description: 'Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.' - operationId: listRiskCategories + description: Get risk overview metrics and trend data for the current project. + operationId: getRiskOverview parameters: + - allowEmptyValue: true + description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. + in: query + name: from + schema: + description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. + format: date-time + type: string + - allowEmptyValue: true + description: Exclusive end of the overview window. Defaults to now. + in: query + name: to + schema: + description: Exclusive end of the overview window. Defaults to now. + format: date-time + type: string - allowEmptyValue: true description: API Key header in: header @@ -18402,7 +18317,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskCategoriesResult' + $ref: '#/components/schemas/RiskOverviewResult' description: OK response. "400": content: @@ -18464,34 +18379,18 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listRiskCategories risk + summary: getRiskOverview risk tags: - risk - x-speakeasy-group: risk.categories - x-speakeasy-name-override: list + x-speakeasy-group: risk.overview + x-speakeasy-name-override: get x-speakeasy-react-hook: - name: RiskCategories - /rpc/risk.overview.get: - get: - description: Get risk overview metrics and trend data for the current project. - operationId: getRiskOverview + name: RiskOverview + /rpc/risk.policies.create: + post: + description: Create a new risk analysis policy for the current project. + operationId: createRiskPolicy parameters: - - allowEmptyValue: true - description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. - in: query - name: from - schema: - description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. - format: date-time - type: string - - allowEmptyValue: true - description: Exclusive end of the overview window. Defaults to now. - in: query - name: to - schema: - description: Exclusive end of the overview window. Defaults to now. - format: date-time - type: string - allowEmptyValue: true description: API Key header in: header @@ -18513,12 +18412,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRiskPolicyRequestBody' + required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/RiskOverviewResult' + $ref: '#/components/schemas/RiskPolicy' description: OK response. "400": content: @@ -18580,41 +18485,27 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getRiskOverview risk + summary: createRiskPolicy risk tags: - risk - x-speakeasy-group: risk.overview - x-speakeasy-name-override: get + x-speakeasy-group: risk.policies + x-speakeasy-name-override: create x-speakeasy-react-hook: - name: RiskOverview - /rpc/risk.overview.rules: - get: - description: Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview. - operationId: getRiskRuleBreakdown + name: RiskCreatePolicy + type: mutation + /rpc/risk.policies.delete: + delete: + description: Delete a risk analysis policy. + operationId: deleteRiskPolicy parameters: - allowEmptyValue: true - description: Required category key to break down by rule_id (e.g. secrets, pii). + description: The policy ID. in: query - name: category + name: id required: true schema: - description: Required category key to break down by rule_id (e.g. secrets, pii). - type: string - - allowEmptyValue: true - description: Inclusive start of the window. Defaults to the same 7-day window as the overview. - in: query - name: from - schema: - description: Inclusive start of the window. Defaults to the same 7-day window as the overview. - format: date-time - type: string - - allowEmptyValue: true - description: Exclusive end of the window. Defaults to now. - in: query - name: to - schema: - description: Exclusive end of the window. Defaults to now. - format: date-time + description: The policy ID. + format: uuid type: string - allowEmptyValue: true description: API Key header @@ -18639,10 +18530,6 @@ paths: type: string responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/RiskRuleBreakdownResult' description: OK response. "400": content: @@ -18704,41 +18591,24 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getRiskRuleBreakdown risk + summary: deleteRiskPolicy risk tags: - risk - x-speakeasy-group: risk.overview - x-speakeasy-name-override: rules - x-speakeasy-react-hook: - name: RiskRuleBreakdown - /rpc/risk.overview.userBreakdown: + x-speakeasy-group: risk.policies + x-speakeasy-name-override: delete + /rpc/risk.policies.get: get: - description: Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview. - operationId: getRiskUserBreakdown + description: Get a risk analysis policy by ID. + operationId: getRiskPolicy parameters: - allowEmptyValue: true - description: External user identifier to scope the breakdown to. + description: The policy ID. in: query - name: external_user_id + name: id required: true schema: - description: External user identifier to scope the breakdown to. - type: string - - allowEmptyValue: true - description: Inclusive start of the window. Defaults to the same 7-day window as the overview. - in: query - name: from - schema: - description: Inclusive start of the window. Defaults to the same 7-day window as the overview. - format: date-time - type: string - - allowEmptyValue: true - description: Exclusive end of the window. Defaults to now. - in: query - name: to - schema: - description: Exclusive end of the window. Defaults to now. - format: date-time + description: The policy ID. + format: uuid type: string - allowEmptyValue: true description: API Key header @@ -18766,7 +18636,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskUserBreakdownResult' + $ref: '#/components/schemas/RiskPolicy' description: OK response. "400": content: @@ -18828,17 +18698,15 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getRiskUserBreakdown risk + summary: getRiskPolicy risk tags: - risk - x-speakeasy-group: risk.overview - x-speakeasy-name-override: userBreakdown - x-speakeasy-react-hook: - name: RiskUserBreakdown - /rpc/risk.policies.create: - post: - description: Create a new risk analysis policy for the current project. - operationId: createRiskPolicy + x-speakeasy-group: risk.policies + x-speakeasy-name-override: get + /rpc/risk.policies.list: + get: + description: List all risk analysis policies for the current project. + operationId: listRiskPolicies parameters: - allowEmptyValue: true description: API Key header @@ -18861,18 +18729,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateRiskPolicyRequestBody' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/RiskPolicy' + $ref: '#/components/schemas/ListRiskPoliciesResult' description: OK response. "400": content: @@ -18934,18 +18796,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: createRiskPolicy risk + summary: listRiskPolicies risk tags: - risk x-speakeasy-group: risk.policies - x-speakeasy-name-override: create + x-speakeasy-name-override: list x-speakeasy-react-hook: - name: RiskCreatePolicy - type: mutation - /rpc/risk.policies.delete: - delete: - description: Delete a risk analysis policy. - operationId: deleteRiskPolicy + name: RiskListPolicies + /rpc/risk.policies.status: + get: + description: Get the analysis status of a risk policy including progress and workflow state. + operationId: getRiskPolicyStatus parameters: - allowEmptyValue: true description: The policy ID. @@ -18979,6 +18840,10 @@ paths: type: string responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/RiskPolicyStatus' description: OK response. "400": content: @@ -19040,25 +18905,16 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: deleteRiskPolicy risk + summary: getRiskPolicyStatus risk tags: - risk x-speakeasy-group: risk.policies - x-speakeasy-name-override: delete - /rpc/risk.policies.get: - get: - description: Get a risk analysis policy by ID. - operationId: getRiskPolicy + x-speakeasy-name-override: status + /rpc/risk.policies.trigger: + post: + description: Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message. + operationId: triggerRiskAnalysis parameters: - - allowEmptyValue: true - description: The policy ID. - in: query - name: id - required: true - schema: - description: The policy ID. - format: uuid - type: string - allowEmptyValue: true description: API Key header in: header @@ -19080,12 +18936,14 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerRiskAnalysisRequestBody' + required: true responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/RiskPolicy' description: OK response. "400": content: @@ -19147,15 +19005,15 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getRiskPolicy risk + summary: triggerRiskAnalysis risk tags: - risk x-speakeasy-group: risk.policies - x-speakeasy-name-override: get - /rpc/risk.policies.list: - get: - description: List all risk analysis policies for the current project. - operationId: listRiskPolicies + x-speakeasy-name-override: trigger + /rpc/risk.policies.update: + put: + description: Update a risk analysis policy. + operationId: updateRiskPolicy parameters: - allowEmptyValue: true description: API Key header @@ -19178,12 +19036,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRiskPolicyRequestBody' + required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ListRiskPoliciesResult' + $ref: '#/components/schemas/RiskPolicy' description: OK response. "400": content: @@ -19245,27 +19109,33 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listRiskPolicies risk + summary: updateRiskPolicy risk tags: - risk x-speakeasy-group: risk.policies - x-speakeasy-name-override: list - x-speakeasy-react-hook: - name: RiskListPolicies - /rpc/risk.policies.status: + x-speakeasy-name-override: update + /rpc/risk.results.byChat: get: - description: Get the analysis status of a risk policy including progress and workflow state. - operationId: getRiskPolicyStatus + description: List risk results grouped by chat session for the current project. + operationId: listRiskResultsByChat parameters: - allowEmptyValue: true - description: The policy ID. + description: Cursor to fetch the next page of results. in: query - name: id - required: true + name: cursor schema: - description: The policy ID. - format: uuid + description: Cursor to fetch the next page of results. type: string + - allowEmptyValue: true + description: Maximum number of results to return per page. + in: query + name: limit + schema: + description: Maximum number of results to return per page. + format: int64 + maximum: 200 + minimum: 1 + type: integer - allowEmptyValue: true description: API Key header in: header @@ -19292,7 +19162,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskPolicyStatus' + $ref: '#/components/schemas/ListRiskResultsByChatResult' description: OK response. "400": content: @@ -19354,16 +19224,51 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getRiskPolicyStatus risk + summary: listRiskResultsByChat risk tags: - risk - x-speakeasy-group: risk.policies - x-speakeasy-name-override: status - /rpc/risk.policies.trigger: - post: - description: Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message. - operationId: triggerRiskAnalysis + x-speakeasy-group: risk.results + x-speakeasy-name-override: byChat + x-speakeasy-react-hook: + name: RiskListResultsByChat + /rpc/risk.results.list: + get: + description: List risk analysis results for the current project. + operationId: listRiskResults parameters: + - allowEmptyValue: true + description: Optional policy ID to filter by. + in: query + name: policy_id + schema: + description: Optional policy ID to filter by. + format: uuid + type: string + - allowEmptyValue: true + description: Optional chat ID to filter by. + in: query + name: chat_id + schema: + description: Optional chat ID to filter by. + format: uuid + type: string + - allowEmptyValue: true + description: Cursor to fetch the next page of results. + in: query + name: cursor + schema: + description: Cursor to fetch the next page of results. + type: string + - allowEmptyValue: true + description: Maximum number of results to return per page. + in: query + name: limit + schema: + description: Maximum number of results to return per page. + format: int64 + maximum: 200 + minimum: 1 + type: integer - allowEmptyValue: true description: API Key header in: header @@ -19385,14 +19290,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/TriggerRiskAnalysisRequestBody' - required: true responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ListRiskResultsResult' description: OK response. "400": content: @@ -19454,16 +19357,51 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: triggerRiskAnalysis risk + summary: listRiskResults risk tags: - risk - x-speakeasy-group: risk.policies - x-speakeasy-name-override: trigger - /rpc/risk.policies.update: - put: - description: Update a risk analysis policy. - operationId: updateRiskPolicy + x-speakeasy-group: risk.results + x-speakeasy-name-override: list + x-speakeasy-react-hook: + name: RiskListResults + /rpc/risk.results.listForAgent: + get: + description: List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim. + operationId: listRiskResultsForAgent parameters: + - allowEmptyValue: true + description: Optional policy ID to filter by. + in: query + name: policy_id + schema: + description: Optional policy ID to filter by. + format: uuid + type: string + - allowEmptyValue: true + description: Optional chat ID to filter by. + in: query + name: chat_id + schema: + description: Optional chat ID to filter by. + format: uuid + type: string + - allowEmptyValue: true + description: Cursor to fetch the next page of results. + in: query + name: cursor + schema: + description: Cursor to fetch the next page of results. + type: string + - allowEmptyValue: true + description: Maximum number of results to return per page. + in: query + name: limit + schema: + description: Maximum number of results to return per page. + format: int64 + maximum: 200 + minimum: 1 + type: integer - allowEmptyValue: true description: API Key header in: header @@ -19485,18 +19423,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRiskPolicyRequestBody' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/RiskPolicy' + $ref: '#/components/schemas/ListRiskResultsForAgentResult' description: OK response. "400": content: @@ -19558,40 +19490,18 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: updateRiskPolicy risk + summary: listRiskResultsForAgent risk tags: - risk - x-speakeasy-group: risk.policies - x-speakeasy-name-override: update - /rpc/risk.results.byChat: - get: - description: List risk results grouped by chat session for the current project. - operationId: listRiskResultsByChat + x-speakeasy-group: risk.results + x-speakeasy-name-override: listForAgent + x-speakeasy-react-hook: + name: RiskListResultsForAgent + /rpc/slack-apps.configure: + post: + description: Store Slack credentials (client ID, client secret, signing secret) for an app. + operationId: configureSlackApp parameters: - - allowEmptyValue: true - description: Cursor to fetch the next page of results. - in: query - name: cursor - schema: - description: Cursor to fetch the next page of results. - type: string - - allowEmptyValue: true - description: Maximum number of results to return per page. - in: query - name: limit - schema: - description: Maximum number of results to return per page. - format: int64 - maximum: 200 - minimum: 1 - type: integer - - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - allowEmptyValue: true description: Session header in: header @@ -19606,12 +19516,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ConfigureSlackAppRequestBody' + required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ListRiskResultsByChatResult' + $ref: '#/components/schemas/SlackAppResult' description: OK response. "400": content: @@ -19668,100 +19584,20 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listRiskResultsByChat risk + summary: configureSlackApp slack tags: - - risk - x-speakeasy-group: risk.results - x-speakeasy-name-override: byChat + - slack + x-speakeasy-name-override: configureSlackApp x-speakeasy-react-hook: - name: RiskListResultsByChat - /rpc/risk.results.list: - get: - description: List risk analysis results for the current project. - operationId: listRiskResults + name: configureSlackApp + /rpc/slack-apps.create: + post: + description: Create a new Slack app and generate its manifest. + operationId: createSlackApp parameters: - - allowEmptyValue: true - description: Optional policy ID to filter by. - in: query - name: policy_id - schema: - description: Optional policy ID to filter by. - format: uuid - type: string - - allowEmptyValue: true - description: Optional chat ID to filter by. - in: query - name: chat_id - schema: - description: Optional chat ID to filter by. - format: uuid - type: string - - allowEmptyValue: true - description: Optional rule category key to filter by (e.g. secrets, pii, financial). - in: query - name: category - schema: - description: Optional rule category key to filter by (e.g. secrets, pii, financial). - type: string - - allowEmptyValue: true - description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). - in: query - name: rule_id - schema: - description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). - type: string - - allowEmptyValue: true - description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. - in: query - name: unique_match - schema: - description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. - type: boolean - - allowEmptyValue: true - description: Filter results to messages created at or after this timestamp (ISO 8601). - in: query - name: from - schema: - description: Filter results to messages created at or after this timestamp (ISO 8601). - format: date-time - type: string - - allowEmptyValue: true - description: Filter results to messages created strictly before this timestamp (ISO 8601). - in: query - name: to - schema: - description: Filter results to messages created strictly before this timestamp (ISO 8601). - format: date-time - type: string - - allowEmptyValue: true - description: Cursor to fetch the next page of results. - in: query - name: cursor - schema: - description: Cursor to fetch the next page of results. - type: string - - allowEmptyValue: true - description: Maximum number of results to return per page. - in: query - name: limit - schema: - description: Maximum number of results to return per page. - format: int64 - maximum: 200 - minimum: 1 - type: integer - - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - allowEmptyValue: true description: Session header in: header @@ -19776,12 +19612,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSlackAppRequestBody' + required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ListRiskResultsResult' + $ref: '#/components/schemas/CreateSlackAppResult' description: OK response. "400": content: @@ -19838,23 +19680,29 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listRiskResults risk + summary: createSlackApp slack tags: - - risk - x-speakeasy-group: risk.results - x-speakeasy-name-override: list + - slack + x-speakeasy-name-override: createSlackApp x-speakeasy-react-hook: - name: RiskListResults - /rpc/slack-apps.configure: - post: - description: Store Slack credentials (client ID, client secret, signing secret) for an app. - operationId: configureSlackApp + name: createSlackApp + /rpc/slack-apps.delete: + delete: + description: Soft-delete a Slack app. + operationId: deleteSlackApp parameters: + - allowEmptyValue: true + description: The Slack app ID + in: query + name: id + required: true + schema: + description: The Slack app ID + format: uuid + type: string - allowEmptyValue: true description: Session header in: header @@ -19869,19 +19717,9 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ConfigureSlackAppRequestBody' - required: true responses: - "200": - content: - application/json: - schema: - $ref: '#/components/schemas/SlackAppResult' - description: OK response. + "204": + description: No Content response. "400": content: application/json: @@ -19940,17 +19778,26 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: configureSlackApp slack + summary: deleteSlackApp slack tags: - slack - x-speakeasy-name-override: configureSlackApp + x-speakeasy-name-override: deleteSlackApp x-speakeasy-react-hook: - name: configureSlackApp - /rpc/slack-apps.create: - post: - description: Create a new Slack app and generate its manifest. - operationId: createSlackApp + name: deleteSlackApp + /rpc/slack-apps.get: + get: + description: Get details of a specific Slack app. + operationId: getSlackApp parameters: + - allowEmptyValue: true + description: The Slack app ID + in: query + name: id + required: true + schema: + description: The Slack app ID + format: uuid + type: string - allowEmptyValue: true description: Session header in: header @@ -19965,18 +19812,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSlackAppRequestBody' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/CreateSlackAppResult' + $ref: '#/components/schemas/SlackAppResult' description: OK response. "400": content: @@ -20036,26 +19877,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: createSlackApp slack + summary: getSlackApp slack tags: - slack - x-speakeasy-name-override: createSlackApp + x-speakeasy-name-override: getSlackApp x-speakeasy-react-hook: - name: createSlackApp - /rpc/slack-apps.delete: - delete: - description: Soft-delete a Slack app. - operationId: deleteSlackApp + name: getSlackApp + /rpc/slack-apps.list: + get: + description: List Slack apps for a project. + operationId: listSlackApps parameters: - - allowEmptyValue: true - description: The Slack app ID - in: query - name: id - required: true - schema: - description: The Slack app ID - format: uuid - type: string - allowEmptyValue: true description: Session header in: header @@ -20071,8 +19903,12 @@ paths: description: project header type: string responses: - "204": - description: No Content response. + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ListSlackAppsResult' + description: OK response. "400": content: application/json: @@ -20131,26 +19967,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: deleteSlackApp slack + summary: listSlackApps slack tags: - slack - x-speakeasy-name-override: deleteSlackApp + x-speakeasy-name-override: listSlackApps x-speakeasy-react-hook: - name: deleteSlackApp - /rpc/slack-apps.get: - get: - description: Get details of a specific Slack app. - operationId: getSlackApp + name: listSlackApps + /rpc/slack-apps.update: + put: + description: Update a Slack app's settings. + operationId: updateSlackApp parameters: - - allowEmptyValue: true - description: The Slack app ID - in: query - name: id - required: true - schema: - description: The Slack app ID - format: uuid - type: string - allowEmptyValue: true description: Session header in: header @@ -20165,192 +19992,12 @@ paths: schema: description: project header type: string - responses: - "200": - content: - application/json: - schema: - $ref: '#/components/schemas/SlackAppResult' - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - - {} - summary: getSlackApp slack - tags: - - slack - x-speakeasy-name-override: getSlackApp - x-speakeasy-react-hook: - name: getSlackApp - /rpc/slack-apps.list: - get: - description: List Slack apps for a project. - operationId: listSlackApps - parameters: - - allowEmptyValue: true - description: Session header - in: header - name: Gram-Session - schema: - description: Session header - type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - responses: - "200": - content: - application/json: - schema: - $ref: '#/components/schemas/ListSlackAppsResult' - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - - {} - summary: listSlackApps slack - tags: - - slack - x-speakeasy-name-override: listSlackApps - x-speakeasy-react-hook: - name: listSlackApps - /rpc/slack-apps.update: - put: - description: Update a Slack app's settings. - operationId: updateSlackApp - parameters: - - allowEmptyValue: true - description: Session header - in: header - name: Gram-Session - schema: - description: Session header - type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateSlackAppRequestBody' - required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSlackAppRequestBody' + required: true responses: "200": content: @@ -26982,16 +26629,14 @@ components: photo_url: type: string description: Avatar URL. - role_ids: - type: array - items: - type: string - description: All role IDs assigned to this member. + role_id: + type: string + description: Currently assigned role ID. required: - id - name - email - - role_ids + - role_id - joined_at AddDeploymentPackageForm: type: object @@ -27196,215 +26841,6 @@ components: - plugin_id - toolset_id - display_name - AdminListOrganizationMembersResult: - type: object - properties: - members: - type: array - items: - $ref: '#/components/schemas/AdminOrganizationMember' - description: The members of the organization. - required: - - members - AdminListOrganizationProjectsResult: - type: object - properties: - projects: - type: array - items: - $ref: '#/components/schemas/AdminProject' - description: The projects belonging to the organization. - required: - - projects - AdminListOrganizationsResult: - type: object - properties: - next_cursor: - type: string - description: Cursor for the next page; empty when exhausted. - organizations: - type: array - items: - $ref: '#/components/schemas/AdminOrganization' - description: The page of organizations. - required: - - organizations - AdminOrganization: - type: object - properties: - account_type: - type: string - description: Gram account type (e.g. free, pro, enterprise). - created_at: - type: string - description: The creation date of the organization. - format: date-time - disabled_at: - type: string - description: The time at which the organization was disabled, if any. - format: date-time - free_trial_ends_at: - type: string - description: The time at which the free trial ends. - format: date-time - free_trial_started_at: - type: string - description: The time at which the free trial started. - format: date-time - id: - type: string - description: The ID of the organization - member_count: - type: integer - description: Number of active members in the organization. - format: int64 - name: - type: string - description: The name of the organization - slug: - type: string - description: The slug of the organization - updated_at: - type: string - description: The last update date of the organization. - format: date-time - whitelisted: - type: boolean - description: Whether the organization is whitelisted for full access. - workos_id: - type: string - description: WorkOS organization ID, if linked. - description: Organization details surfaced to admin operators. - required: - - id - - name - - slug - - account_type - - whitelisted - - member_count - - created_at - - updated_at - AdminOrganizationMember: - type: object - properties: - created_at: - type: string - format: date-time - display_name: - type: string - description: User display name. - email: - type: string - description: User email address. - id: - type: string - description: User ID. - last_login: - type: string - description: The time the user last logged in, if any. - format: date-time - updated_at: - type: string - format: date-time - description: Organization member surfaced to admin operators. - required: - - id - - email - - display_name - - created_at - - updated_at - AdminProject: - type: object - properties: - created_at: - type: string - description: The creation date of the project. - format: date-time - id: - type: string - description: The ID of the project - name: - type: string - description: The name of the project - slug: - type: string - description: The slug of the project - updated_at: - type: string - description: The last update date of the project. - format: date-time - description: Project summary surfaced to admin operators. - required: - - id - - name - - slug - - created_at - - updated_at - AdminProjectDetail: - type: object - properties: - api_key_count: - type: integer - description: Number of active API keys in the project. - format: int64 - assistant_count: - type: integer - description: Number of active assistants in the project. - format: int64 - created_at: - type: string - format: date-time - deployment_count: - type: integer - description: Total number of deployments in the project. - format: int64 - environment_count: - type: integer - description: Number of active environments in the project. - format: int64 - functions_runner_version: - type: string - description: Functions runner version pin, if set. - http_tool_count: - type: integer - description: Number of active HTTP tool definitions in the project. - format: int64 - id: - type: string - description: Project ID. - logo_asset_id: - type: string - description: Project logo asset ID, if set. - name: - type: string - description: Project name. - organization_id: - type: string - description: Owning organization ID. - slug: - type: string - description: Project slug. - toolset_count: - type: integer - description: Number of active toolsets in the project. - format: int64 - updated_at: - type: string - format: date-time - description: Full project detail surfaced to admin operators, including aggregated counts of child resources. - required: - - id - - name - - slug - - organization_id - - toolset_count - - deployment_count - - http_tool_count - - environment_count - - api_key_count - - assistant_count - - created_at - - updated_at AllowedOrigin: type: object properties: @@ -28160,10 +27596,6 @@ components: type: integer description: The number of messages in the chat format: int64 - risk_findings_count: - type: integer - description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. - format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -28265,10 +27697,6 @@ components: type: integer description: The number of messages in the chat format: int64 - risk_findings_count: - type: integer - description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. - format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -28331,10 +27759,6 @@ components: items: $ref: '#/components/schemas/ChatResolution' description: List of resolutions for this chat - risk_findings_count: - type: integer - description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. - format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -29729,44 +29153,6 @@ components: - created_at - updated_at - is_updating - CustomDomainMcpEndpoint: - type: object - properties: - id: - type: string - description: The ID of the MCP endpoint - format: uuid - mcp_server_id: - type: string - description: The ID of the parent MCP server - format: uuid - mcp_server_name: - type: string - description: The display name of the parent MCP server. May be empty if the parent has no configured name. - mcp_server_slug: - type: string - description: The url-friendly slug of the parent MCP server. May be empty if the parent has no configured slug. - project_id: - type: string - description: The ID of the project the endpoint belongs to - format: uuid - project_name: - type: string - description: The display name of the project the endpoint belongs to - project_slug: - type: string - description: The url-friendly slug of the project the endpoint belongs to - slug: - type: string - description: The endpoint slug - description: An MCP endpoint registered under a custom domain, with its parent MCP server and project denormalised for display in the dashboard's delete-impact preview. - required: - - id - - slug - - project_id - - project_name - - project_slug - - mcp_server_id DeleteGlobalToolVariationForm: type: object properties: @@ -32025,16 +31411,6 @@ components: required: - chats - total - ListCustomDomainMcpEndpointsResult: - type: object - properties: - mcp_endpoints: - type: array - items: - $ref: '#/components/schemas/CustomDomainMcpEndpoint' - description: Result of listing the MCP endpoints registered under an organization's custom domain. - required: - - mcp_endpoints ListDeploymentForm: type: object properties: @@ -32383,6 +31759,24 @@ components: description: Cursor for the next page of results. required: - chats + ListRiskResultsForAgentResult: + type: object + properties: + next_cursor: + type: string + description: Cursor for the next page of results. + results: + type: array + items: + $ref: '#/components/schemas/RiskResultRedacted' + description: The list of risk results with match content redacted to opaque fingerprints. + total_count: + type: integer + description: Total number of findings across all enabled policies. + format: int64 + required: + - results + - total_count ListRiskResultsResult: type: object properties: @@ -34055,6 +33449,13 @@ components: - policy - sort_order - created_at + PokeResponseBody: + type: object + properties: + ok: + type: boolean + required: + - ok Project: type: object properties: @@ -34981,52 +34382,6 @@ components: description: Whether the prompt-injection ML classifier is configured on this server. required: - pi_classifier_enabled - RiskCategoriesResult: - type: object - properties: - categories: - type: array - items: - $ref: '#/components/schemas/RiskCategoryDefinition' - description: Categories in classification-priority order. The last entry is the 'custom' fallback for findings that match none of the others. - description: Canonical risk category definitions used to classify findings, in classification-priority order. Consumers should iterate in order and pick the first match. - required: - - categories - RiskCategoryDefinition: - type: object - properties: - description: - type: string - description: Plain-English description of what this category covers. - icon: - type: string - description: Lucide icon name suggested for this category. - key: - type: string - description: Canonical category key (e.g. 'secrets', 'pii', 'shadow_mcp'). - label: - type: string - description: Human-readable category label for UI rendering. - rule_id_prefix: - type: string - description: When non-empty, findings whose rule_id starts with this prefix belong to this category. The catch-all for a family (e.g. 'pii.'). - rule_ids: - type: array - items: - type: string - description: When non-empty, findings whose rule_id is in this exact list belong to this category. Checked before rule_id_prefix. - source: - type: string - description: When non-empty, findings whose source equals this value belong to this category. - description: One canonical risk category and how findings are classified into it. - required: - - key - - label - - description - - icon - - source - - rule_ids - - rule_id_prefix RiskChatSummary: type: object properties: @@ -35102,11 +34457,6 @@ components: items: $ref: '#/components/schemas/RiskOverviewCategory' description: Top policy categories by finding count. - top_rules: - type: array - items: - $ref: '#/components/schemas/RiskRuleBreakdownEntry' - description: Top rule_ids by finding count. top_users: type: array items: @@ -35121,7 +34471,6 @@ components: - active_policies - top_categories - top_users - - top_rules - time_series_findings RiskOverviewTimeSeriesFinding: type: object @@ -35147,16 +34496,12 @@ components: email: type: string description: User email, or Unknown user when unavailable. - external_user_id: - type: string - description: External user identifier as recorded on chats, when known. Empty when the finding cannot be attributed to an external user. findings: type: integer description: Finding count for this user. format: int64 required: - email - - external_user_id - findings RiskPolicy: type: object @@ -35347,87 +34692,72 @@ components: - chat_message_id - source - created_at - RiskRuleBreakdownEntry: + RiskResultRedacted: type: object properties: - findings: - type: integer - description: Finding count for this rule within the window. - format: int64 - rule_id: + chat_id: type: string - description: Rule identifier (e.g. 'secret.aws-access-key'). Empty when the finding has no rule_id (treat as 'unspecified'). - source: + description: The chat session containing the message. + format: uuid + chat_message_id: type: string - description: Source bucket the rule belongs to (gitleaks, presidio, etc.) for label/icon resolution on the dashboard. - required: - - rule_id - - source - - findings - RiskRuleBreakdownResult: - type: object - properties: - category: + description: The chat message that was scanned. + format: uuid + chat_title: type: string - description: Category the breakdown is scoped to. - from: + description: Title of the chat session. + confidence: + type: number + description: Confidence score for this finding. + format: double + created_at: type: string - description: Inclusive start of the window used. + description: When this result was created. format: date-time - rules: - type: array - items: - $ref: '#/components/schemas/RiskRuleBreakdownEntry' - description: Rules in this category, ordered by finding count descending. - to: + description: type: string - description: Exclusive end of the window used. - format: date-time - total: - type: integer - description: Total findings across all rules in this category and window. - format: int64 - required: - - from - - to - - category - - rules - - total - RiskUserBreakdownResult: - type: object - properties: - categories: - type: array - items: - $ref: '#/components/schemas/RiskOverviewCategory' - description: Category breakdown for this user, ordered by finding count descending. - external_user_id: + description: Human-readable description of the finding. + id: type: string - description: External user the breakdown is scoped to. - findings: + description: The result ID. + format: uuid + match_redacted: + type: string + description: Opaque fingerprint of the original match in the form `` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim. + policy_id: + type: string + description: The risk policy ID. + format: uuid + policy_version: type: integer - description: Total findings for this user in the window. + description: Policy version when this result was produced. format: int64 - from: + position_known: + type: boolean + description: Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks. + rule_id: type: string - description: Inclusive start of the window used. - format: date-time - rules: + description: The matched rule identifier. + source: + type: string + description: Detection source (e.g. gitleaks, presidio, shadow_mcp). + tags: type: array items: - $ref: '#/components/schemas/RiskRuleBreakdownEntry' - description: Rule_id breakdown for this user, ordered by finding count descending. - to: + type: string + description: Tags from the detection rule. + user_id: type: string - description: Exclusive end of the window used. - format: date-time + description: The user who owns the chat session. required: - - from - - to - - external_user_id - - findings - - categories - - rules + - id + - policy_id + - policy_version + - chat_message_id + - source + - created_at + - match_redacted + - position_known Role: type: object properties: @@ -37614,20 +36944,18 @@ components: required: - id - visibility - UpdateMemberRolesForm: + UpdateMemberRoleForm: type: object properties: - role_ids: - type: array - items: - type: string - description: The role IDs to assign. Replaces all existing role assignments. + role_id: + type: string + description: The new role ID to assign. user_id: type: string description: The user ID to update. required: - user_id - - role_ids + - role_id UpdateOAuthProxyServerForm: type: object properties: @@ -37650,20 +36978,6 @@ components: $ref: '#/components/schemas/OAuthProxyServerUpdateForm' required: - oauth_proxy_server - UpdateOrganizationRequestBody: - type: object - properties: - account_type: - type: string - description: New gram_account_type (e.g. free, pro, enterprise). - id: - type: string - description: Organization ID. - whitelisted: - type: boolean - description: New whitelisted flag. - required: - - id UpdatePackageForm: type: object properties: @@ -38762,11 +38076,6 @@ components: - verified - message securitySchemes: - admin_auth_header_Authorization: - type: apiKey - description: Admin session auth for admin endpoints. Cookie-only credential; session is validated against Google on every request. - name: Authorization - in: header apikey_header_Authorization: type: apiKey description: key based auth. @@ -38799,7 +38108,7 @@ tags: - name: access description: Manage roles, team member access control, and authorization challenge events. - name: admin - description: Operations supporting admin tasks, protected by Google workspace auth. + description: Operational endpoints for administrative tasks. - name: assets description: Manages assets used by Gram projects. - name: assistantMemories diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 1296135bbd..f85d779556 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,8 +2,8 @@ speakeasyVersion: 1.761.5 sources: Gram-Internal: sourceNamespace: gram-api-description - sourceRevisionDigest: sha256:ff08946d7176c8b8bc960850b9c70684f888e333b31698357e743c81f1661d17 - sourceBlobDigest: sha256:a92436cb1716ed6f509abf87fdb37f9ea38580973f70cb5c99a45fdf080c7748 + sourceRevisionDigest: sha256:ff26cf6fe2b783e3957d938ce1bfa06663d2cc78ab25a89c9f873cb3db23de15 + sourceBlobDigest: sha256:c7f21640b5d998d4d1635fd4506e943031e25c1354d36fa21bf0bed2385cf91c tags: - latest - 0.0.1 @@ -11,8 +11,10 @@ targets: gram-internal: source: Gram-Internal sourceNamespace: gram-api-description - sourceRevisionDigest: sha256:ff08946d7176c8b8bc960850b9c70684f888e333b31698357e743c81f1661d17 - sourceBlobDigest: sha256:a92436cb1716ed6f509abf87fdb37f9ea38580973f70cb5c99a45fdf080c7748 + sourceRevisionDigest: sha256:ff26cf6fe2b783e3957d938ce1bfa06663d2cc78ab25a89c9f873cb3db23de15 + sourceBlobDigest: sha256:c7f21640b5d998d4d1635fd4506e943031e25c1354d36fa21bf0bed2385cf91c + codeSamplesNamespace: gram-api-description-typescript-code-samples + codeSamplesRevisionDigest: sha256:5e43e237c333c5298af866b6236fc06db81b44442ca08fa1cfab0f5752ad4c76 workflow: workflowVersion: 1.0.0 speakeasyVersion: pinned diff --git a/client/dashboard/src/components/insights-sidebar.tsx b/client/dashboard/src/components/insights-sidebar.tsx index ee65ed0840..628c30c2b0 100644 --- a/client/dashboard/src/components/insights-sidebar.tsx +++ b/client/dashboard/src/components/insights-sidebar.tsx @@ -285,7 +285,7 @@ export function InsightsProvider({ const sidebarWidth = `min(${SIDEBAR_MAX_WIDTH}px, ${SIDEBAR_MAX_PERCENT}vw)`; // Build system prompt with optional context info. - const baseInstructions = `You are a helpful assistant for analyzing logs in Gram, an AI observability platform. Focus exclusively on log search and analysis. + const baseInstructions = `You are a helpful assistant for analyzing logs and security findings in Gram, an AI observability platform. Focus on log search, tool-call analysis, and risk/policy findings. The current date is ${new Date().toISOString().split("T")[0]}. @@ -298,7 +298,13 @@ When a user asks about logs for a specific user, tenant, customer, or entity: 2. Identify the most relevant attribute and filter on it (e.g. { path: "@user", operator: "eq", values: ["someone@example.com"] }). 3. If no relevant @-prefixed attributes exist, tell the user and fall back to text search instead. -MCP server vs. client breakdowns: \`gram.hook.source\` and \`gram.tool_call.source\` are complementary dimensions, not aliases. \`gram.hook.source\` identifies the agent/client that invoked Gram (e.g. "claude-code", "cursor") — use this for adoption / "who's using us" questions. \`gram.tool_call.source\` identifies the downstream MCP server that handled the call (e.g. "datadog-mcp", "linear") — use this for "top servers" / per-MCP usage questions. When asked about MCP server-level breakdowns, query BOTH dimensions: a server can appear in one and not the other depending on whether you're slicing by caller or callee.`; +MCP server vs. client breakdowns: \`gram.hook.source\` and \`gram.tool_call.source\` are complementary dimensions, not aliases. \`gram.hook.source\` identifies the agent/client that invoked Gram (e.g. "claude-code", "cursor") — use this for adoption / "who's using us" questions. \`gram.tool_call.source\` identifies the downstream MCP server that handled the call (e.g. "datadog-mcp", "linear") — use this for "top servers" / per-MCP usage questions. When asked about MCP server-level breakdowns, query BOTH dimensions: a server can appear in one and not the other depending on whether you're slicing by caller or callee. + +Risk and policy findings: +- A risk policy scans chat messages for issues. Each \`source\` is a detector family: \`gitleaks\` (regex-based secret scanners — API keys, tokens), \`presidio\` (PII entities — emails, SSNs, credit cards), \`prompt_injection\` (heuristic + ML classifier for injection attempts), \`destructive_tool\` (tool calls matching destructive intent), \`shadow_mcp\` (calls to MCP servers not on an approved list). +- Use \`listRiskResultsForAgent\` for finding-level data — it returns the same shape as the dashboard's findings list but with the raw \`match\` field replaced by \`match_redacted\`: an opaque token of the form \`\` for secret-bearing sources, or the literal server identifier for \`shadow_mcp\`. The \`sha\` prefix is deterministic, so two findings of the same secret share a fingerprint — that's how you dedupe leak counts across chats without seeing the secret. +- Use \`listRiskResultsByChat\` for chat-level rollups (findings_count, latest_detected), \`listRiskPolicies\` for the policy catalog, and \`getRiskPolicyStatus\` for analysis progress (pending vs analyzed counts, workflow state). +- HARD RULE — never quote or repeat a \`match_redacted\` value, never attempt to reconstruct a redacted secret, and never echo any string that looks like an API key, token, password, or PII. Refer to findings by their \`rule_id\` (e.g. "aws-access-key-id"), \`source\` family, and \`chat_id\`. \`shadow_mcp\` matches (server URLs / stdio commands) are safe to name verbatim.`; const systemPrompt = contextInfo ? `${baseInstructions} diff --git a/client/dashboard/src/pages/security/PolicyCenter.tsx b/client/dashboard/src/pages/security/PolicyCenter.tsx index c95745a9e3..6e4a21fd8c 100644 --- a/client/dashboard/src/pages/security/PolicyCenter.tsx +++ b/client/dashboard/src/pages/security/PolicyCenter.tsx @@ -1,3 +1,4 @@ +import { InsightsConfig } from "@/components/insights-sidebar"; import { Page } from "@/components/page-layout"; import { RequireScope } from "@/components/require-scope"; import { Badge } from "@/components/ui/badge"; @@ -359,12 +360,54 @@ function PolicyCenterContent() { ); } + const enabledPolicies = policies.filter((p) => p.enabled); + const insightsContext = [ + "Page: Policy Center.", + `Total policies: ${policies.length}, enabled: ${enabledPolicies.length}.`, + `Policy actions: ${policies.map((p) => `${p.name} (${p.action})`).join(", ") || "none"}.`, + "Available risk tools: listRiskPolicies, getRiskPolicy, getRiskCapabilities, getRiskPolicyStatus, listRiskResultsForAgent (finding-level with match redaction), listRiskResultsByChat, listShadowMCPApprovals.", + "Never echo match_redacted values verbatim. Refer to findings by rule_id and source.", + ].join(" "); + + const insightsSuggestions = [ + { + title: "Policy status snapshot", + label: "what's running and what's stuck", + prompt: + "For each policy returned by listRiskPolicies, call getRiskPolicyStatus and report: enabled flag, action (flag vs block), total messages, pending messages, and workflow state. Flag any policy with non-zero pending messages.", + }, + { + title: "Quiet policies", + label: "policies with no recent findings", + prompt: + "Identify policies that have not produced any findings in the last 30 days. Use listRiskResultsForAgent with policy_id to check each policy. Report by name and last-seen finding date.", + }, + { + title: "Coverage by source", + label: "what's each source catching", + prompt: + "Group findings by source (gitleaks, presidio, prompt_injection, shadow_mcp, destructive_tool) over the last 7 days using listRiskResultsForAgent. Report counts and the top rule_id per source family.", + }, + { + title: "Capabilities check", + label: "what detectors are available", + prompt: + "Call getRiskCapabilities and tell me which detection backends are configured on this server (e.g. prompt-injection ML classifier).", + }, + ]; + return ( +

Risk Policies

diff --git a/client/dashboard/src/pages/security/SecurityOverview.tsx b/client/dashboard/src/pages/security/SecurityOverview.tsx index 45319aef08..fe1e66a637 100644 --- a/client/dashboard/src/pages/security/SecurityOverview.tsx +++ b/client/dashboard/src/pages/security/SecurityOverview.tsx @@ -1,6 +1,7 @@ import { MetricCard } from "@/components/chart/MetricCard"; import { ChartCard } from "@/components/chart/ChartCard"; import { formatChartLabel } from "@/components/chart/chartUtils"; +import { InsightsConfig } from "@/components/insights-sidebar"; import { Page } from "@/components/page-layout"; import { RequireScope } from "@/components/require-scope"; import { DashboardCard } from "@/components/ui/dashboard-card"; @@ -332,8 +333,56 @@ function SecurityOverviewContent() { const hasFindings = overview.findings > 0; + // Brief security-flavoured context for the AI Insights sidebar. Numbers are + // pulled from the current risk overview query so the assistant can reason + // about "this period" without re-fetching, but it must still call the risk + // tools for anything that isn't a top-line metric. + const insightsContext = [ + "Page: Security Overview.", + `Selected date range: ${rangeLabel}.`, + `Active risk policies: ${overview.activePolicies}.`, + `Findings in current range: ${overview.findings}.`, + `Messages scanned: ${overview.messagesScanned}.`, + `Flagged sessions: ${overview.flaggedSessions}.`, + "Available risk tools: listRiskResultsForAgent (finding-level, match is redacted to ), listRiskResultsByChat (chat-level rollups), listRiskPolicies, getRiskPolicyStatus, listShadowMCPApprovals.", + "Never echo match_redacted values verbatim. Refer to findings by rule_id and source.", + ].join(" "); + + const insightsSuggestions = [ + { + title: "Top rules this week", + label: "which rule_ids fired most", + prompt: + "Use listRiskResultsForAgent to find the top 5 rule_ids by finding count over the last 7 days. Report by source family and rule_id only — never quote any match_redacted value.", + }, + { + title: "Shadow MCP servers", + label: "unapproved MCPs in use", + prompt: + "List all shadow_mcp findings across the project. For each, name the MCP server identifier (match), the chat_id, and when it was first observed. These match values are server URLs/commands and are safe to name.", + }, + { + title: "Unique leaked secrets", + label: "dedupe by fingerprint", + prompt: + "Use listRiskResultsForAgent to count distinct leaked secrets by their match_redacted fingerprint (since identical secrets share a sha prefix). Group by rule_id and report counts. Do not print match_redacted values back to me.", + }, + { + title: "Analysis backlog", + label: "pending messages per policy", + prompt: + "For each active policy, call getRiskPolicyStatus and report pending vs analyzed message counts and workflow state. Flag any policy whose pending count is non-zero.", + }, + ]; + return ( <> +
"} + application/json: {"description": "swerve hm receptor how", "grants": [{"scope": "mcp:connect"}], "name": ""} responses: "201": application/json: {"created_at": "2024-08-15T08:14:35.208Z", "description": "mmm co-producer instead achieve through decision carefully ah", "grants": [], "id": "", "is_system": false, "member_count": 747343, "name": "", "slug": "", "updated_at": "2024-02-02T13:39:51.749Z"} @@ -8445,10 +8323,10 @@ examples: updateMemberRole: speakeasy-default-update-member-role: requestBody: - application/json: {"role_ids": ["", ""], "user_id": ""} + application/json: {"role_id": "", "user_id": ""} responses: "200": - application/json: {"email": "Connie_Bayer@hotmail.com", "id": "", "joined_at": "2024-12-28T07:55:09.816Z", "name": "", "role_ids": []} + application/json: {"email": "Connie_Bayer@hotmail.com", "id": "", "joined_at": "2024-12-28T07:55:09.816Z", "name": "", "role_id": ""} "400": application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": true} "500": @@ -9293,7 +9171,7 @@ examples: createMcpServer: speakeasy-default-create-mcp-server: requestBody: - application/json: {"name": "", "visibility": "disabled"} + application/json: {"visibility": "disabled"} responses: "200": application/json: {"created_at": "2025-01-23T20:53:32.469Z", "id": "df9f5333-5b18-4ebb-8ff1-d143df62b56f", "project_id": "500b982c-7d90-4657-9e63-bba27d26e2e3", "updated_at": "2024-12-04T04:34:07.135Z", "visibility": "private"} @@ -9679,7 +9557,7 @@ examples: createRemoteSessionClient: speakeasy-default-create-remote-session-client: requestBody: - application/json: {"client_id": "", "remote_session_issuer_id": "9c427fdc-c54f-44c3-be91-8986011459d6", "user_session_issuer_id": "cbd47e63-9c47-412a-ae2d-e642b16f5786"} + application/json: {"remote_session_issuer_id": "9c427fdc-c54f-44c3-be91-8986011459d6", "user_session_issuer_id": "cbd47e63-9c47-412a-ae2d-e642b16f5786"} responses: "200": application/json: {"client_id": "", "client_id_issued_at": "2026-09-12T02:11:06.798Z", "created_at": "2024-02-22T23:36:49.840Z", "id": "3b58bf62-f9bf-4a25-beed-c1c69148bd09", "project_id": "82f5eecb-d49a-42c3-85ee-ee9697ad8481", "remote_session_issuer_id": "cff84fd5-1b43-4a7f-ad98-9246408582ff", "updated_at": "2024-11-28T16:12:11.805Z", "user_session_issuer_id": "f167df5c-4788-485e-9c85-affa4552d5ce"} @@ -9902,80 +9780,15 @@ examples: application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": true} "500": application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": true} - checkMcpEndpointSlugAvailability: - speakeasy-default-check-mcp-endpoint-slug-availability: - parameters: - query: - slug: "" - responses: - "200": - application/json: true - "400": - application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": false} - "500": - application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": false} - getRiskOverview: - speakeasy-default-get-risk-overview: - responses: - "200": - application/json: {"active_policies": 705076, "findings": 627926, "flagged_sessions": 304659, "from": "2026-06-19T12:28:06.346Z", "messages_scanned": 370773, "time_series_findings": [{"bucket_start": "2024-12-08T02:32:23.245Z", "category": "", "findings": 627926}], "to": "2025-12-13T22:42:16.392Z", "top_categories": [], "top_rules": [{"findings": 312140, "rule_id": "", "source": ""}], "top_users": [{"email": "Ocie.Corwin@gmail.com", "external_user_id": "", "findings": 58689}]} - "400": - application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} - "500": - application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} - updateMemberRoles: - speakeasy-default-update-member-roles: - requestBody: - application/json: {"role_ids": ["", ""], "user_id": ""} - responses: - "200": - application/json: {"email": "Burley10@yahoo.com", "id": "", "joined_at": "2025-07-12T09:13:01.198Z", "name": "", "role_ids": [""]} - "400": - application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": true} - "500": - application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": true} - listCustomDomainMcpEndpoints: - speakeasy-default-list-custom-domain-mcp-endpoints: - responses: - "200": - application/json: {"mcp_endpoints": []} - "400": - application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} - "500": - application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} - listRiskCategories: - speakeasy-default-list-risk-categories: + listRiskResultsForAgent: + speakeasy-default-list-risk-results-for-agent: responses: "200": - application/json: {"categories": []} - "400": - application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} - "500": - application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} - getRiskRuleBreakdown: - speakeasy-default-get-risk-rule-breakdown: - parameters: - query: - category: "" - responses: - "200": - application/json: {"category": "", "from": "2025-10-13T05:09:28.370Z", "rules": [{"findings": 492203, "rule_id": "", "source": ""}], "to": "2025-11-24T22:28:32.298Z", "total": 167121} + application/json: {"results": [{"chat_message_id": "85523fdc-294e-46eb-80ad-c5d3dbfbce6c", "created_at": "2025-02-15T11:28:44.474Z", "id": "7529b6c3-c4e3-404d-b3bf-51c1706f2715", "match_redacted": "", "policy_id": "6391ece6-67aa-48d4-82d4-f168c2cc7ae8", "policy_version": 657869, "position_known": true, "source": ""}], "total_count": 878955} "400": application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": true} "500": application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": true} - getRiskUserBreakdown: - speakeasy-default-get-risk-user-breakdown: - parameters: - query: - external_user_id: "" - responses: - "200": - application/json: {"categories": [], "external_user_id": "", "findings": 301411, "from": "2024-07-23T11:57:04.397Z", "rules": [], "to": "2026-09-26T23:55:59.257Z"} - "400": - application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": false} - "500": - application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": false} examplesVersion: 1.0.2 generatedTests: {} generatedFiles: diff --git a/client/sdk/README.md b/client/sdk/README.md index 314aa6a8e3..8d84d807c1 100644 --- a/client/sdk/README.md +++ b/client/sdk/README.md @@ -444,6 +444,7 @@ run(); * [byChat](docs/sdks/results/README.md#bychat) - listRiskResultsByChat risk * [list](docs/sdks/results/README.md#list) - listRiskResults risk +* [listForAgent](docs/sdks/results/README.md#listforagent) - listRiskResultsForAgent risk ### [Slack](docs/sdks/slack/README.md) @@ -763,6 +764,7 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`riskPoliciesUpdate`](docs/sdks/policies/README.md#update) - updateRiskPolicy risk - [`riskResultsByChat`](docs/sdks/results/README.md#bychat) - listRiskResultsByChat risk - [`riskResultsList`](docs/sdks/results/README.md#list) - listRiskResults risk +- [`riskResultsListForAgent`](docs/sdks/results/README.md#listforagent) - listRiskResultsForAgent risk - [`slackConfigureSlackApp`](docs/sdks/slack/README.md#configureslackapp) - configureSlackApp slack - [`slackCreateSlackApp`](docs/sdks/slack/README.md#createslackapp) - createSlackApp slack - [`slackDeleteSlackApp`](docs/sdks/slack/README.md#deleteslackapp) - deleteSlackApp slack @@ -1050,6 +1052,7 @@ To learn about this feature and how to get started, check - [`useRiskListPolicies`](docs/sdks/policies/README.md#list) - listRiskPolicies risk - [`useRiskListResults`](docs/sdks/results/README.md#list) - listRiskResults risk - [`useRiskListResultsByChat`](docs/sdks/results/README.md#bychat) - listRiskResultsByChat risk +- [`useRiskListResultsForAgent`](docs/sdks/results/README.md#listforagent) - listRiskResultsForAgent risk - [`useRiskListShadowMCPApprovals`](docs/sdks/approvals/README.md#list) - listShadowMCPApprovals risk - [`useRiskOverview`](docs/sdks/overview/README.md#get) - getRiskOverview risk - [`useRiskPoliciesDeleteMutation`](docs/sdks/policies/README.md#delete) - deleteRiskPolicy risk diff --git a/client/sdk/src/funcs/riskResultsListForAgent.ts b/client/sdk/src/funcs/riskResultsListForAgent.ts new file mode 100644 index 0000000000..68dd6030d1 --- /dev/null +++ b/client/sdk/src/funcs/riskResultsListForAgent.ts @@ -0,0 +1,236 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4-mini"; +import { GramCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { resolveSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import * as components from "../models/components/index.js"; +import { GramError } from "../models/errors/gramerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * listRiskResultsForAgent risk + * + * @remarks + * List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim. + */ +export function riskResultsListForAgent( + client: GramCore, + request?: operations.ListRiskResultsForAgentRequest | undefined, + security?: operations.ListRiskResultsForAgentSecurity | undefined, + options?: RequestOptions, +): APIPromise< + Result< + components.ListRiskResultsForAgentResult, + | errors.ServiceError + | GramError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + security, + options, + )); +} + +async function $do( + client: GramCore, + request?: operations.ListRiskResultsForAgentRequest | undefined, + security?: operations.ListRiskResultsForAgentSecurity | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + components.ListRiskResultsForAgentResult, + | errors.ServiceError + | GramError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + z.parse( + z.optional(operations.ListRiskResultsForAgentRequest$outboundSchema), + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const path = pathToFunc("/rpc/risk.results.listForAgent")(); + + const query = encodeFormQuery({ + "chat_id": payload?.chat_id, + "cursor": payload?.cursor, + "limit": payload?.limit, + "policy_id": payload?.policy_id, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + "Gram-Key": encodeSimple("Gram-Key", payload?.["Gram-Key"], { + explode: false, + charEncoding: "none", + }), + "Gram-Project": encodeSimple("Gram-Project", payload?.["Gram-Project"], { + explode: false, + charEncoding: "none", + }), + "Gram-Session": encodeSimple("Gram-Session", payload?.["Gram-Session"], { + explode: false, + charEncoding: "none", + }), + })); + + const requestSecurity = resolveSecurity( + [ + { + fieldName: "Gram-Key", + type: "apiKey:header", + value: security?.option1?.apikeyHeaderGramKey, + }, + { + fieldName: "Gram-Project", + type: "apiKey:header", + value: security?.option1?.projectSlugHeaderGramProject, + }, + ], + [ + { + fieldName: "Gram-Project", + type: "apiKey:header", + value: security?.option2?.projectSlugHeaderGramProject, + }, + { + fieldName: "Gram-Session", + type: "apiKey:header", + value: security?.option2?.sessionHeaderGramSession, + }, + ], + ); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "listRiskResultsForAgent", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: security, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: [ + "400", + "401", + "403", + "404", + "409", + "415", + "422", + "4XX", + "500", + "502", + "5XX", + ], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + components.ListRiskResultsForAgentResult, + | errors.ServiceError + | GramError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, components.ListRiskResultsForAgentResult$inboundSchema), + M.jsonErr( + [400, 401, 403, 404, 409, 415, 422], + errors.ServiceError$inboundSchema, + ), + M.jsonErr([500, 502], errors.ServiceError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client/sdk/src/models/components/index.ts b/client/sdk/src/models/components/index.ts index d1dbf8f720..42b5c2ae80 100644 --- a/client/sdk/src/models/components/index.ts +++ b/client/sdk/src/models/components/index.ts @@ -74,7 +74,6 @@ export * from "./creditusageresponsebody.js"; export * from "./cursorhookpayload.js"; export * from "./cursorhookresult.js"; export * from "./customdomain.js"; -export * from "./customdomainmcpendpoint.js"; export * from "./deleteglobaltoolvariationresult.js"; export * from "./deleterequestbody.js"; export * from "./deployment.js"; @@ -151,7 +150,6 @@ export * from "./listchallengebucketsresult.js"; export * from "./listchallengesresult.js"; export * from "./listchatsresult.js"; export * from "./listchatswithresolutionsresult.js"; -export * from "./listcustomdomainmcpendpointsresult.js"; export * from "./listdeploymentresult.js"; export * from "./listenvironmentsresult.js"; export * from "./listfilteroptionspayload.js"; @@ -176,6 +174,7 @@ export * from "./listresourcesresult.js"; export * from "./listresponsebody.js"; export * from "./listriskpoliciesresult.js"; export * from "./listriskresultsbychatresult.js"; +export * from "./listriskresultsforagentresult.js"; export * from "./listriskresultsresult.js"; export * from "./listrolegrant.js"; export * from "./listrolesresult.js"; @@ -279,8 +278,6 @@ export * from "./resource.js"; export * from "./resourceentry.js"; export * from "./responsefilter.js"; export * from "./riskcapabilitiesresult.js"; -export * from "./riskcategoriesresult.js"; -export * from "./riskcategorydefinition.js"; export * from "./riskchatsummary.js"; export * from "./riskoverviewcategory.js"; export * from "./riskoverviewresult.js"; @@ -289,9 +286,7 @@ export * from "./riskoverviewuser.js"; export * from "./riskpolicy.js"; export * from "./riskpolicystatus.js"; export * from "./riskresult.js"; -export * from "./riskrulebreakdownentry.js"; -export * from "./riskrulebreakdownresult.js"; -export * from "./riskuserbreakdownresult.js"; +export * from "./riskresultredacted.js"; export * from "./role.js"; export * from "./rolegrant.js"; export * from "./rolesummary.js"; @@ -357,7 +352,7 @@ export * from "./updateenvironmentrequestbody.js"; export * from "./updateinviterolerequestbody.js"; export * from "./updatemcpendpointform.js"; export * from "./updatemcpserverform.js"; -export * from "./updatememberrolesform.js"; +export * from "./updatememberroleform.js"; export * from "./updateoauthproxyserverrequestbody.js"; export * from "./updatepackageform.js"; export * from "./updatepackageresult.js"; diff --git a/client/sdk/src/models/components/listriskresultsforagentresult.ts b/client/sdk/src/models/components/listriskresultsforagentresult.ts new file mode 100644 index 0000000000..5bc5e55b15 --- /dev/null +++ b/client/sdk/src/models/components/listriskresultsforagentresult.ts @@ -0,0 +1,56 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4-mini"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import { + RiskResultRedacted, + RiskResultRedacted$inboundSchema, +} from "./riskresultredacted.js"; + +export type ListRiskResultsForAgentResult = { + /** + * Cursor for the next page of results. + */ + nextCursor?: string | undefined; + /** + * The list of risk results with match content redacted to opaque fingerprints. + */ + results: Array; + /** + * Total number of findings across all enabled policies. + */ + totalCount: number; +}; + +/** @internal */ +export const ListRiskResultsForAgentResult$inboundSchema: z.ZodMiniType< + ListRiskResultsForAgentResult, + unknown +> = z.pipe( + z.object({ + next_cursor: z.optional(z.string()), + results: z.array(RiskResultRedacted$inboundSchema), + total_count: z.int(), + }), + z.transform((v) => { + return remap$(v, { + "next_cursor": "nextCursor", + "total_count": "totalCount", + }); + }), +); + +export function listRiskResultsForAgentResultFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ListRiskResultsForAgentResult$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ListRiskResultsForAgentResult' from JSON`, + ); +} diff --git a/client/sdk/src/models/components/riskresultredacted.ts b/client/sdk/src/models/components/riskresultredacted.ts new file mode 100644 index 0000000000..938e73ea92 --- /dev/null +++ b/client/sdk/src/models/components/riskresultredacted.ts @@ -0,0 +1,123 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4-mini"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type RiskResultRedacted = { + /** + * The chat session containing the message. + */ + chatId?: string | undefined; + /** + * The chat message that was scanned. + */ + chatMessageId: string; + /** + * Title of the chat session. + */ + chatTitle?: string | undefined; + /** + * Confidence score for this finding. + */ + confidence?: number | undefined; + /** + * When this result was created. + */ + createdAt: Date; + /** + * Human-readable description of the finding. + */ + description?: string | undefined; + /** + * The result ID. + */ + id: string; + /** + * Opaque fingerprint of the original match in the form `` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim. + */ + matchRedacted: string; + /** + * The risk policy ID. + */ + policyId: string; + /** + * Policy version when this result was produced. + */ + policyVersion: number; + /** + * Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks. + */ + positionKnown: boolean; + /** + * The matched rule identifier. + */ + ruleId?: string | undefined; + /** + * Detection source (e.g. gitleaks, presidio, shadow_mcp). + */ + source: string; + /** + * Tags from the detection rule. + */ + tags?: Array | undefined; + /** + * The user who owns the chat session. + */ + userId?: string | undefined; +}; + +/** @internal */ +export const RiskResultRedacted$inboundSchema: z.ZodMiniType< + RiskResultRedacted, + unknown +> = z.pipe( + z.object({ + chat_id: z.optional(z.string()), + chat_message_id: z.string(), + chat_title: z.optional(z.string()), + confidence: z.optional(z.number()), + created_at: z.pipe( + z.iso.datetime({ offset: true }), + z.transform(v => new Date(v)), + ), + description: z.optional(z.string()), + id: z.string(), + match_redacted: z.string(), + policy_id: z.string(), + policy_version: z.int(), + position_known: z.boolean(), + rule_id: z.optional(z.string()), + source: z.string(), + tags: z.optional(z.array(z.string())), + user_id: z.optional(z.string()), + }), + z.transform((v) => { + return remap$(v, { + "chat_id": "chatId", + "chat_message_id": "chatMessageId", + "chat_title": "chatTitle", + "created_at": "createdAt", + "match_redacted": "matchRedacted", + "policy_id": "policyId", + "policy_version": "policyVersion", + "position_known": "positionKnown", + "rule_id": "ruleId", + "user_id": "userId", + }); + }), +); + +export function riskResultRedactedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RiskResultRedacted$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RiskResultRedacted' from JSON`, + ); +} diff --git a/client/sdk/src/models/operations/index.ts b/client/sdk/src/models/operations/index.ts index 80bca6fd87..bcd8bb439b 100644 --- a/client/sdk/src/models/operations/index.ts +++ b/client/sdk/src/models/operations/index.ts @@ -172,6 +172,7 @@ export * from "./listriskcategories.js"; export * from "./listriskpolicies.js"; export * from "./listriskresults.js"; export * from "./listriskresultsbychat.js"; +export * from "./listriskresultsforagent.js"; export * from "./listroles.js"; export * from "./listscopes.js"; export * from "./listservernameoverrides.js"; diff --git a/client/sdk/src/models/operations/listriskresultsforagent.ts b/client/sdk/src/models/operations/listriskresultsforagent.ts new file mode 100644 index 0000000000..e58169a770 --- /dev/null +++ b/client/sdk/src/models/operations/listriskresultsforagent.ts @@ -0,0 +1,205 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4-mini"; +import { remap as remap$ } from "../../lib/primitives.js"; + +export type ListRiskResultsForAgentSecurityOption1 = { + apikeyHeaderGramKey: string; + projectSlugHeaderGramProject: string; +}; + +export type ListRiskResultsForAgentSecurityOption2 = { + projectSlugHeaderGramProject: string; + sessionHeaderGramSession: string; +}; + +export type ListRiskResultsForAgentSecurity = { + option1?: ListRiskResultsForAgentSecurityOption1 | undefined; + option2?: ListRiskResultsForAgentSecurityOption2 | undefined; +}; + +export type ListRiskResultsForAgentRequest = { + /** + * Optional policy ID to filter by. + */ + policyId?: string | undefined; + /** + * Optional chat ID to filter by. + */ + chatId?: string | undefined; + /** + * Cursor to fetch the next page of results. + */ + cursor?: string | undefined; + /** + * Maximum number of results to return per page. + */ + limit?: number | undefined; + /** + * API Key header + */ + gramKey?: string | undefined; + /** + * Session header + */ + gramSession?: string | undefined; + /** + * project header + */ + gramProject?: string | undefined; +}; + +/** @internal */ +export type ListRiskResultsForAgentSecurityOption1$Outbound = { + "apikey_header_Gram-Key": string; + "project_slug_header_Gram-Project": string; +}; + +/** @internal */ +export const ListRiskResultsForAgentSecurityOption1$outboundSchema: + z.ZodMiniType< + ListRiskResultsForAgentSecurityOption1$Outbound, + ListRiskResultsForAgentSecurityOption1 + > = z.pipe( + z.object({ + apikeyHeaderGramKey: z.string(), + projectSlugHeaderGramProject: z.string(), + }), + z.transform((v) => { + return remap$(v, { + apikeyHeaderGramKey: "apikey_header_Gram-Key", + projectSlugHeaderGramProject: "project_slug_header_Gram-Project", + }); + }), + ); + +export function listRiskResultsForAgentSecurityOption1ToJSON( + listRiskResultsForAgentSecurityOption1: + ListRiskResultsForAgentSecurityOption1, +): string { + return JSON.stringify( + ListRiskResultsForAgentSecurityOption1$outboundSchema.parse( + listRiskResultsForAgentSecurityOption1, + ), + ); +} + +/** @internal */ +export type ListRiskResultsForAgentSecurityOption2$Outbound = { + "project_slug_header_Gram-Project": string; + "session_header_Gram-Session": string; +}; + +/** @internal */ +export const ListRiskResultsForAgentSecurityOption2$outboundSchema: + z.ZodMiniType< + ListRiskResultsForAgentSecurityOption2$Outbound, + ListRiskResultsForAgentSecurityOption2 + > = z.pipe( + z.object({ + projectSlugHeaderGramProject: z.string(), + sessionHeaderGramSession: z.string(), + }), + z.transform((v) => { + return remap$(v, { + projectSlugHeaderGramProject: "project_slug_header_Gram-Project", + sessionHeaderGramSession: "session_header_Gram-Session", + }); + }), + ); + +export function listRiskResultsForAgentSecurityOption2ToJSON( + listRiskResultsForAgentSecurityOption2: + ListRiskResultsForAgentSecurityOption2, +): string { + return JSON.stringify( + ListRiskResultsForAgentSecurityOption2$outboundSchema.parse( + listRiskResultsForAgentSecurityOption2, + ), + ); +} + +/** @internal */ +export type ListRiskResultsForAgentSecurity$Outbound = { + Option1?: ListRiskResultsForAgentSecurityOption1$Outbound | undefined; + Option2?: ListRiskResultsForAgentSecurityOption2$Outbound | undefined; +}; + +/** @internal */ +export const ListRiskResultsForAgentSecurity$outboundSchema: z.ZodMiniType< + ListRiskResultsForAgentSecurity$Outbound, + ListRiskResultsForAgentSecurity +> = z.pipe( + z.object({ + option1: z.optional( + z.lazy(() => ListRiskResultsForAgentSecurityOption1$outboundSchema), + ), + option2: z.optional( + z.lazy(() => ListRiskResultsForAgentSecurityOption2$outboundSchema), + ), + }), + z.transform((v) => { + return remap$(v, { + option1: "Option1", + option2: "Option2", + }); + }), +); + +export function listRiskResultsForAgentSecurityToJSON( + listRiskResultsForAgentSecurity: ListRiskResultsForAgentSecurity, +): string { + return JSON.stringify( + ListRiskResultsForAgentSecurity$outboundSchema.parse( + listRiskResultsForAgentSecurity, + ), + ); +} + +/** @internal */ +export type ListRiskResultsForAgentRequest$Outbound = { + policy_id?: string | undefined; + chat_id?: string | undefined; + cursor?: string | undefined; + limit?: number | undefined; + "Gram-Key"?: string | undefined; + "Gram-Session"?: string | undefined; + "Gram-Project"?: string | undefined; +}; + +/** @internal */ +export const ListRiskResultsForAgentRequest$outboundSchema: z.ZodMiniType< + ListRiskResultsForAgentRequest$Outbound, + ListRiskResultsForAgentRequest +> = z.pipe( + z.object({ + policyId: z.optional(z.string()), + chatId: z.optional(z.string()), + cursor: z.optional(z.string()), + limit: z.optional(z.int()), + gramKey: z.optional(z.string()), + gramSession: z.optional(z.string()), + gramProject: z.optional(z.string()), + }), + z.transform((v) => { + return remap$(v, { + policyId: "policy_id", + chatId: "chat_id", + gramKey: "Gram-Key", + gramSession: "Gram-Session", + gramProject: "Gram-Project", + }); + }), +); + +export function listRiskResultsForAgentRequestToJSON( + listRiskResultsForAgentRequest: ListRiskResultsForAgentRequest, +): string { + return JSON.stringify( + ListRiskResultsForAgentRequest$outboundSchema.parse( + listRiskResultsForAgentRequest, + ), + ); +} diff --git a/client/sdk/src/react-query/index.ts b/client/sdk/src/react-query/index.ts index 76231ef55a..bf49d1d8c2 100644 --- a/client/sdk/src/react-query/index.ts +++ b/client/sdk/src/react-query/index.ts @@ -198,6 +198,7 @@ export * from "./riskCreatePolicy.js"; export * from "./riskListPolicies.js"; export * from "./riskListResults.js"; export * from "./riskListResultsByChat.js"; +export * from "./riskListResultsForAgent.js"; export * from "./riskListShadowMCPApprovals.js"; export * from "./riskOverview.js"; export * from "./riskPoliciesDelete.js"; diff --git a/client/sdk/src/react-query/riskListResultsForAgent.core.ts b/client/sdk/src/react-query/riskListResultsForAgent.core.ts new file mode 100644 index 0000000000..3038d11734 --- /dev/null +++ b/client/sdk/src/react-query/riskListResultsForAgent.core.ts @@ -0,0 +1,94 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { + QueryClient, + QueryFunctionContext, + QueryKey, +} from "@tanstack/react-query"; +import { GramCore } from "../core.js"; +import { riskResultsListForAgent } from "../funcs/riskResultsListForAgent.js"; +import { combineSignals } from "../lib/primitives.js"; +import { RequestOptions } from "../lib/sdks.js"; +import * as components from "../models/components/index.js"; +import * as operations from "../models/operations/index.js"; +import { unwrapAsync } from "../types/fp.js"; +export type RiskListResultsForAgentQueryData = + components.ListRiskResultsForAgentResult; + +export function prefetchRiskListResultsForAgent( + queryClient: QueryClient, + client$: GramCore, + request?: operations.ListRiskResultsForAgentRequest | undefined, + security?: operations.ListRiskResultsForAgentSecurity | undefined, + options?: RequestOptions, +): Promise { + return queryClient.prefetchQuery({ + ...buildRiskListResultsForAgentQuery( + client$, + request, + security, + options, + ), + }); +} + +export function buildRiskListResultsForAgentQuery( + client$: GramCore, + request?: operations.ListRiskResultsForAgentRequest | undefined, + security?: operations.ListRiskResultsForAgentSecurity | undefined, + options?: RequestOptions, +): { + queryKey: QueryKey; + queryFn: ( + context: QueryFunctionContext, + ) => Promise; +} { + return { + queryKey: queryKeyRiskListResultsForAgent({ + policyId: request?.policyId, + chatId: request?.chatId, + cursor: request?.cursor, + limit: request?.limit, + gramKey: request?.gramKey, + gramSession: request?.gramSession, + gramProject: request?.gramProject, + }), + queryFn: async function riskListResultsForAgentQueryFn( + ctx, + ): Promise { + const sig = combineSignals( + ctx.signal, + options?.signal, + options?.fetchOptions?.signal, + ); + const mergedOptions = { + ...options?.fetchOptions, + ...options, + signal: sig, + }; + + return unwrapAsync(riskResultsListForAgent( + client$, + request, + security, + mergedOptions, + )); + }, + }; +} + +export function queryKeyRiskListResultsForAgent( + parameters: { + policyId?: string | undefined; + chatId?: string | undefined; + cursor?: string | undefined; + limit?: number | undefined; + gramKey?: string | undefined; + gramSession?: string | undefined; + gramProject?: string | undefined; + }, +): QueryKey { + return ["@gram/client", "results", "listForAgent", parameters]; +} diff --git a/client/sdk/src/react-query/riskListResultsForAgent.ts b/client/sdk/src/react-query/riskListResultsForAgent.ts new file mode 100644 index 0000000000..3527581c80 --- /dev/null +++ b/client/sdk/src/react-query/riskListResultsForAgent.ts @@ -0,0 +1,162 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { + InvalidateQueryFilters, + QueryClient, + useQuery, + UseQueryResult, + useSuspenseQuery, + UseSuspenseQueryResult, +} from "@tanstack/react-query"; +import { GramError } from "../models/errors/gramerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { useGramContext } from "./_context.js"; +import { + QueryHookOptions, + SuspenseQueryHookOptions, + TupleToPrefixes, +} from "./_types.js"; +import { + buildRiskListResultsForAgentQuery, + prefetchRiskListResultsForAgent, + queryKeyRiskListResultsForAgent, + RiskListResultsForAgentQueryData, +} from "./riskListResultsForAgent.core.js"; +export { + buildRiskListResultsForAgentQuery, + prefetchRiskListResultsForAgent, + queryKeyRiskListResultsForAgent, + type RiskListResultsForAgentQueryData, +}; + +export type RiskListResultsForAgentQueryError = + | errors.ServiceError + | GramError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError; + +/** + * listRiskResultsForAgent risk + * + * @remarks + * List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim. + */ +export function useRiskListResultsForAgent( + request?: operations.ListRiskResultsForAgentRequest | undefined, + security?: operations.ListRiskResultsForAgentSecurity | undefined, + options?: QueryHookOptions< + RiskListResultsForAgentQueryData, + RiskListResultsForAgentQueryError + >, +): UseQueryResult< + RiskListResultsForAgentQueryData, + RiskListResultsForAgentQueryError +> { + const client = useGramContext(); + return useQuery({ + ...buildRiskListResultsForAgentQuery( + client, + request, + security, + options, + ), + ...options, + }); +} + +/** + * listRiskResultsForAgent risk + * + * @remarks + * List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim. + */ +export function useRiskListResultsForAgentSuspense( + request?: operations.ListRiskResultsForAgentRequest | undefined, + security?: operations.ListRiskResultsForAgentSecurity | undefined, + options?: SuspenseQueryHookOptions< + RiskListResultsForAgentQueryData, + RiskListResultsForAgentQueryError + >, +): UseSuspenseQueryResult< + RiskListResultsForAgentQueryData, + RiskListResultsForAgentQueryError +> { + const client = useGramContext(); + return useSuspenseQuery({ + ...buildRiskListResultsForAgentQuery( + client, + request, + security, + options, + ), + ...options, + }); +} + +export function setRiskListResultsForAgentData( + client: QueryClient, + queryKeyBase: [ + parameters: { + policyId?: string | undefined; + chatId?: string | undefined; + cursor?: string | undefined; + limit?: number | undefined; + gramKey?: string | undefined; + gramSession?: string | undefined; + gramProject?: string | undefined; + }, + ], + data: RiskListResultsForAgentQueryData, +): RiskListResultsForAgentQueryData | undefined { + const key = queryKeyRiskListResultsForAgent(...queryKeyBase); + + return client.setQueryData(key, data); +} + +export function invalidateRiskListResultsForAgent( + client: QueryClient, + queryKeyBase: TupleToPrefixes< + [parameters: { + policyId?: string | undefined; + chatId?: string | undefined; + cursor?: string | undefined; + limit?: number | undefined; + gramKey?: string | undefined; + gramSession?: string | undefined; + gramProject?: string | undefined; + }] + >, + filters?: Omit, +): Promise { + return client.invalidateQueries({ + ...filters, + queryKey: ["@gram/client", "results", "listForAgent", ...queryKeyBase], + }); +} + +export function invalidateAllRiskListResultsForAgent( + client: QueryClient, + filters?: Omit, +): Promise { + return client.invalidateQueries({ + ...filters, + queryKey: ["@gram/client", "results", "listForAgent"], + }); +} diff --git a/client/sdk/src/sdk/results.ts b/client/sdk/src/sdk/results.ts index 334e12ebbc..eeeccf1cba 100644 --- a/client/sdk/src/sdk/results.ts +++ b/client/sdk/src/sdk/results.ts @@ -4,6 +4,7 @@ import { riskResultsByChat } from "../funcs/riskResultsByChat.js"; import { riskResultsList } from "../funcs/riskResultsList.js"; +import { riskResultsListForAgent } from "../funcs/riskResultsListForAgent.js"; import { ClientSDK, RequestOptions } from "../lib/sdks.js"; import * as components from "../models/components/index.js"; import * as operations from "../models/operations/index.js"; @@ -47,4 +48,23 @@ export class Results extends ClientSDK { options, )); } + + /** + * listRiskResultsForAgent risk + * + * @remarks + * List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim. + */ + async listForAgent( + request?: operations.ListRiskResultsForAgentRequest | undefined, + security?: operations.ListRiskResultsForAgentSecurity | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(riskResultsListForAgent( + this, + request, + security, + options, + )); + } } diff --git a/server/design/risk/design.go b/server/design/risk/design.go index 9c5f34c10e..3c97360770 100644 --- a/server/design/risk/design.go +++ b/server/design/risk/design.go @@ -248,6 +248,46 @@ var _ = Service("risk", func() { Meta("openapi:extension:x-speakeasy-react-hook", `{"name": "RiskListResults"}`) }) + Method("listRiskResultsForAgent", func() { + Description("List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.") + + Payload(func() { + security.ByKeyPayload() + security.SessionPayload() + security.ProjectPayload() + Attribute("policy_id", String, "Optional policy ID to filter by.", func() { + Format(FormatUUID) + }) + Attribute("chat_id", String, "Optional chat ID to filter by.", func() { + Format(FormatUUID) + }) + Attribute("cursor", String, "Cursor to fetch the next page of results.") + Attribute("limit", Int, "Maximum number of results to return per page.", func() { + Minimum(1) + Maximum(200) + }) + }) + + Result(ListRiskResultsForAgentResult) + + HTTP(func() { + GET("/rpc/risk.results.listForAgent") + security.ByKeyHeader() + security.SessionHeader() + security.ProjectHeader() + Param("policy_id") + Param("chat_id") + Param("cursor") + Param("limit") + Response(StatusOK) + }) + + Meta("openapi:operationId", "listRiskResultsForAgent") + Meta("openapi:extension:x-speakeasy-group", "risk.results") + Meta("openapi:extension:x-speakeasy-name-override", "listForAgent") + Meta("openapi:extension:x-speakeasy-react-hook", `{"name": "RiskListResultsForAgent"}`) + }) + Method("listRiskResultsByChat", func() { Description("List risk results grouped by chat session for the current project.") @@ -577,6 +617,13 @@ var ListRiskResultsResult = Type("ListRiskResultsResult", func() { Required("results", "total_count") }) +var ListRiskResultsForAgentResult = Type("ListRiskResultsForAgentResult", func() { + Attribute("results", ArrayOf(shared.RiskResultRedacted), "The list of risk results with match content redacted to opaque fingerprints.") + Attribute("total_count", Int64, "Total number of findings across all enabled policies.") + Attribute("next_cursor", String, "Cursor for the next page of results.") + Required("results", "total_count") +}) + var ListRiskResultsByChatResult = Type("ListRiskResultsByChatResult", func() { Attribute("chats", ArrayOf(shared.RiskChatSummary), "Risk results grouped by chat.") Attribute("next_cursor", String, "Cursor for the next page of results.") diff --git a/server/design/shared/risk.go b/server/design/shared/risk.go index 735ef9ad95..6577a14963 100644 --- a/server/design/shared/risk.go +++ b/server/design/shared/risk.go @@ -94,6 +94,47 @@ var RiskResult = Type("RiskResult", func() { Required("id", "policy_id", "policy_version", "chat_message_id", "source", "created_at") }) +// RiskResultRedacted mirrors RiskResult but replaces the raw `match` content +// with an opaque length+SHA256-prefix fingerprint. Designed for agent / MCP +// consumption so secret content from gitleaks-, presidio-, or +// prompt-injection-class findings never reaches the model context. +// +// For shadow_mcp findings the original match value is a server URL / stdio +// command identifier that the dashboard already renders unmasked — that +// passthrough is preserved here so agents can correlate findings to servers +// without losing signal. +var RiskResultRedacted = Type("RiskResultRedacted", func() { + Meta("struct:pkg:path", "types") + + Attribute("id", String, "The result ID.", func() { + Format(FormatUUID) + }) + Attribute("policy_id", String, "The risk policy ID.", func() { + Format(FormatUUID) + }) + Attribute("policy_version", Int64, "Policy version when this result was produced.") + Attribute("chat_message_id", String, "The chat message that was scanned.", func() { + Format(FormatUUID) + }) + Attribute("chat_id", String, "The chat session containing the message.", func() { + Format(FormatUUID) + }) + Attribute("chat_title", String, "Title of the chat session.") + Attribute("user_id", String, "The user who owns the chat session.") + Attribute("source", String, "Detection source (e.g. gitleaks, presidio, shadow_mcp).") + Attribute("rule_id", String, "The matched rule identifier.") + Attribute("description", String, "Human-readable description of the finding.") + Attribute("match_redacted", String, "Opaque fingerprint of the original match in the form `` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim.") + Attribute("position_known", Boolean, "Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks.") + Attribute("confidence", Float64, "Confidence score for this finding.") + Attribute("tags", ArrayOf(String), "Tags from the detection rule.") + Attribute("created_at", String, "When this result was created.", func() { + Format(FormatDateTime) + }) + + Required("id", "policy_id", "policy_version", "chat_message_id", "source", "created_at", "match_redacted", "position_known") +}) + var RiskChatSummary = Type("RiskChatSummary", func() { Meta("struct:pkg:path", "types") diff --git a/server/gen/http/cli/gram/cli.go b/server/gen/http/cli/gram/cli.go index f7f1aaf8fe..b0382fe0ea 100644 --- a/server/gen/http/cli/gram/cli.go +++ b/server/gen/http/cli/gram/cli.go @@ -73,8 +73,8 @@ func UsageCommands() []string { return []string{ "external receive-work-os-webhook", "about openapi", - "access (list-roles|get-role|create-role|update-role|delete-role|list-scopes|list-members|list-grants|update-member-roles|get-rbac-status|enable-rbac|disable-rbac|list-challenges|list-challenge-buckets|resolve-challenge)", - "admin (login|callback|logout|get-project|update-organization|get-organization|list-organization-members|list-organization-projects|list-organizations)", + "access (list-roles|get-role|create-role|update-role|delete-role|list-scopes|list-members|list-grants|update-member-role|get-rbac-status|enable-rbac|disable-rbac|list-challenges|list-challenge-buckets|resolve-challenge)", + "admin poke", "assets (serve-image|upload-image|upload-functions|upload-open-ap-iv3|fetch-open-ap-iv3-from-url|serve-open-ap-iv3|serve-function|list-assets|upload-chat-attachment|serve-chat-attachment|create-signed-chat-attachment-url|serve-chat-attachment-signed)", "assistant-memories (list-assistant-memories|get-assistant-memory|delete-assistant-memory)", "assistants (list-assistants|get-assistant|create-assistant|update-assistant|delete-assistant)", @@ -83,7 +83,7 @@ func UsageCommands() []string { "chat (list-chats|load-chat|generate-title|credit-usage|list-chats-with-resolutions|delete-chat|submit-feedback)", "chat-sessions (create|revoke)", "deployments (get-deployment|get-latest-deployment|get-active-deployment|create-deployment|evolve|redeploy|list-deployments|get-deployment-logs)", - "domains (get-domain|create-domain|delete-domain|list-mcp-endpoints)", + "domains (get-domain|create-domain|delete-domain)", "environments (create-environment|list-environments|update-environment|clone-environment|delete-environment|set-source-environment-link|delete-source-environment-link|get-source-environment|set-toolset-environment-link|delete-toolset-environment-link|get-toolset-environment)", "mcp-registries (clear-cache|list-registries|list-catalog|get-server-details)", "collections (create|list|update|delete|attach-server|detach-server|list-servers)", @@ -93,7 +93,7 @@ func UsageCommands() []string { "instances get-instance", "integrations (get|list)", "keys (create-key|list-keys|revoke-key|verify-key)", - "mcp-endpoints (create-mcp-endpoint|get-mcp-endpoint|list-mcp-endpoints|update-mcp-endpoint|check-mcp-endpoint-slug-availability|delete-mcp-endpoint)", + "mcp-endpoints (create-mcp-endpoint|get-mcp-endpoint|list-mcp-endpoints|update-mcp-endpoint|delete-mcp-endpoint)", "mcp-metadata (get-mcp-metadata|set-mcp-metadata|export-mcp-metadata)", "mcp-servers (create-mcp-server|get-mcp-server|list-mcp-servers|update-mcp-server|delete-mcp-server)", "organizations (get|send-invite|revoke-invite|update-invite-role|list-invites|list-users|remove-user|enable-webhooks|disable-webhooks|create-portal-session)", @@ -104,10 +104,10 @@ func UsageCommands() []string { "projects (get-project|create-project|list-projects|set-logo|list-allowed-origins|upsert-allowed-origin|delete-project|set-organization-whitelist)", "remote-mcp (create-server|list-servers|get-server|update-server|verify-url|delete-server)", "remote-session-clients (create-remote-session-client|clone-client-fromoauth-proxy-provider|update-remote-session-client|list-remote-session-clients|get-remote-session-client|delete-remote-session-client)", - "remote-session-issuers (discover-remote-session-issuer|create-remote-session-issuer|update-remote-session-issuer|list-remote-session-issuers|get-remote-session-issuer|delete-remote-session-issuer)", + "remote-session-issuers (discover-remote-session-issuer|create-remote-session-issuer|register-remote-session-issuer|update-remote-session-issuer|list-remote-session-issuers|get-remote-session-issuer|delete-remote-session-issuer)", "remote-sessions (list-remote-sessions|revoke-remote-session)", "resources list-resources", - "risk (create-risk-policy|list-risk-policies|get-risk-capabilities|get-risk-policy|update-risk-policy|delete-risk-policy|list-risk-results|list-risk-results-by-chat|get-risk-overview|list-risk-categories|get-risk-user-breakdown|get-risk-rule-breakdown|get-risk-policy-status|list-shadow-mcp-approvals|approve-shadow-mcp|revoke-shadow-mcp-approval|trigger-risk-analysis)", + "risk (create-risk-policy|list-risk-policies|get-risk-capabilities|get-risk-policy|update-risk-policy|delete-risk-policy|list-risk-results|list-risk-results-for-agent|list-risk-results-by-chat|get-risk-policy-status|list-shadow-mcp-approvals|approve-shadow-mcp|revoke-shadow-mcp-approval|trigger-risk-analysis)", "slack (create-slack-app|list-slack-apps|get-slack-app|configure-slack-app|update-slack-app|delete-slack-app)", "telemetry (search-logs|search-tool-calls|search-chats|search-users|capture-event|get-project-metrics-summary|get-user-metrics-summary|get-observability-overview|get-project-overview|list-filter-options|list-attribute-keys|get-hooks-summary|list-hooks-traces)", "templates (create-template|update-template|get-template|list-templates|delete-template|render-template-by-id|render-template)", @@ -128,7 +128,7 @@ func UsageExamples() string { return os.Args[0] + " " + "external receive-work-os-webhook --workos-signature \"abc123\" --stream \"goa.png\"" + "\n" + os.Args[0] + " " + "about openapi" + "\n" + os.Args[0] + " " + "access list-roles --apikey-token \"abc123\" --session-token \"abc123\"" + "\n" + - os.Args[0] + " " + "admin login --return-to \"abc123\" --prompt \"abc123\"" + "\n" + + os.Args[0] + " " + "admin poke" + "\n" + os.Args[0] + " " + "assets serve-image --id \"abc123\"" + "\n" + "" } @@ -191,10 +191,10 @@ func ParseEndpoint( accessListGrantsApikeyTokenFlag = accessListGrantsFlags.String("apikey-token", "", "") accessListGrantsSessionTokenFlag = accessListGrantsFlags.String("session-token", "", "") - accessUpdateMemberRolesFlags = flag.NewFlagSet("update-member-roles", flag.ExitOnError) - accessUpdateMemberRolesBodyFlag = accessUpdateMemberRolesFlags.String("body", "REQUIRED", "") - accessUpdateMemberRolesApikeyTokenFlag = accessUpdateMemberRolesFlags.String("apikey-token", "", "") - accessUpdateMemberRolesSessionTokenFlag = accessUpdateMemberRolesFlags.String("session-token", "", "") + accessUpdateMemberRoleFlags = flag.NewFlagSet("update-member-role", flag.ExitOnError) + accessUpdateMemberRoleBodyFlag = accessUpdateMemberRoleFlags.String("body", "REQUIRED", "") + accessUpdateMemberRoleApikeyTokenFlag = accessUpdateMemberRoleFlags.String("apikey-token", "", "") + accessUpdateMemberRoleSessionTokenFlag = accessUpdateMemberRoleFlags.String("session-token", "", "") accessGetRBACStatusFlags = flag.NewFlagSet("get-rbac-status", flag.ExitOnError) accessGetRBACStatusSessionTokenFlag = accessGetRBACStatusFlags.String("session-token", "", "") @@ -235,47 +235,7 @@ func ParseEndpoint( adminFlags = flag.NewFlagSet("admin", flag.ContinueOnError) - adminLoginFlags = flag.NewFlagSet("login", flag.ExitOnError) - adminLoginReturnToFlag = adminLoginFlags.String("return-to", "", "") - adminLoginPromptFlag = adminLoginFlags.String("prompt", "", "") - - adminCallbackFlags = flag.NewFlagSet("callback", flag.ExitOnError) - adminCallbackCodeFlag = adminCallbackFlags.String("code", "", "") - adminCallbackStateParamFlag = adminCallbackFlags.String("state-param", "REQUIRED", "") - adminCallbackErrorFlag = adminCallbackFlags.String("error", "", "") - adminCallbackErrorDescriptionFlag = adminCallbackFlags.String("error-description", "", "") - adminCallbackStateCookieFlag = adminCallbackFlags.String("state-cookie", "", "") - - adminLogoutFlags = flag.NewFlagSet("logout", flag.ExitOnError) - adminLogoutSessionIDFlag = adminLogoutFlags.String("session-id", "", "") - - adminGetProjectFlags = flag.NewFlagSet("get-project", flag.ExitOnError) - adminGetProjectIDOrSlugFlag = adminGetProjectFlags.String("id-or-slug", "REQUIRED", "") - adminGetProjectAdminSessionTokenFlag = adminGetProjectFlags.String("admin-session-token", "", "") - - adminUpdateOrganizationFlags = flag.NewFlagSet("update-organization", flag.ExitOnError) - adminUpdateOrganizationBodyFlag = adminUpdateOrganizationFlags.String("body", "REQUIRED", "") - adminUpdateOrganizationAdminSessionTokenFlag = adminUpdateOrganizationFlags.String("admin-session-token", "", "") - - adminGetOrganizationFlags = flag.NewFlagSet("get-organization", flag.ExitOnError) - adminGetOrganizationIDOrSlugFlag = adminGetOrganizationFlags.String("id-or-slug", "REQUIRED", "") - adminGetOrganizationAdminSessionTokenFlag = adminGetOrganizationFlags.String("admin-session-token", "", "") - - adminListOrganizationMembersFlags = flag.NewFlagSet("list-organization-members", flag.ExitOnError) - adminListOrganizationMembersOrganizationIDFlag = adminListOrganizationMembersFlags.String("organization-id", "REQUIRED", "") - adminListOrganizationMembersAdminSessionTokenFlag = adminListOrganizationMembersFlags.String("admin-session-token", "", "") - - adminListOrganizationProjectsFlags = flag.NewFlagSet("list-organization-projects", flag.ExitOnError) - adminListOrganizationProjectsOrganizationIDFlag = adminListOrganizationProjectsFlags.String("organization-id", "REQUIRED", "") - adminListOrganizationProjectsAdminSessionTokenFlag = adminListOrganizationProjectsFlags.String("admin-session-token", "", "") - - adminListOrganizationsFlags = flag.NewFlagSet("list-organizations", flag.ExitOnError) - adminListOrganizationsQFlag = adminListOrganizationsFlags.String("q", "", "") - adminListOrganizationsAccountTypeFlag = adminListOrganizationsFlags.String("account-type", "", "") - adminListOrganizationsIncludeDisabledFlag = adminListOrganizationsFlags.String("include-disabled", "", "") - adminListOrganizationsCursorFlag = adminListOrganizationsFlags.String("cursor", "", "") - adminListOrganizationsLimitFlag = adminListOrganizationsFlags.String("limit", "", "") - adminListOrganizationsAdminSessionTokenFlag = adminListOrganizationsFlags.String("admin-session-token", "", "") + adminPokeFlags = flag.NewFlagSet("poke", flag.ExitOnError) assetsFlags = flag.NewFlagSet("assets", flag.ContinueOnError) @@ -466,9 +426,7 @@ func ParseEndpoint( chatListChatsWithResolutionsFlags = flag.NewFlagSet("list-chats-with-resolutions", flag.ExitOnError) chatListChatsWithResolutionsSearchFlag = chatListChatsWithResolutionsFlags.String("search", "", "") chatListChatsWithResolutionsExternalUserIDFlag = chatListChatsWithResolutionsFlags.String("external-user-id", "", "") - chatListChatsWithResolutionsAssistantIDFlag = chatListChatsWithResolutionsFlags.String("assistant-id", "", "") chatListChatsWithResolutionsResolutionStatusFlag = chatListChatsWithResolutionsFlags.String("resolution-status", "", "") - chatListChatsWithResolutionsHasRiskFlag = chatListChatsWithResolutionsFlags.String("has-risk", "", "") chatListChatsWithResolutionsFromFlag = chatListChatsWithResolutionsFlags.String("from", "", "") chatListChatsWithResolutionsToFlag = chatListChatsWithResolutionsFlags.String("to", "", "") chatListChatsWithResolutionsLimitFlag = chatListChatsWithResolutionsFlags.String("limit", "50", "") @@ -566,9 +524,6 @@ func ParseEndpoint( domainsDeleteDomainFlags = flag.NewFlagSet("delete-domain", flag.ExitOnError) domainsDeleteDomainSessionTokenFlag = domainsDeleteDomainFlags.String("session-token", "", "") - domainsListMcpEndpointsFlags = flag.NewFlagSet("list-mcp-endpoints", flag.ExitOnError) - domainsListMcpEndpointsSessionTokenFlag = domainsListMcpEndpointsFlags.String("session-token", "", "") - environmentsFlags = flag.NewFlagSet("environments", flag.ContinueOnError) environmentsCreateEnvironmentFlags = flag.NewFlagSet("create-environment", flag.ExitOnError) @@ -811,13 +766,6 @@ func ParseEndpoint( mcpEndpointsUpdateMcpEndpointApikeyTokenFlag = mcpEndpointsUpdateMcpEndpointFlags.String("apikey-token", "", "") mcpEndpointsUpdateMcpEndpointProjectSlugInputFlag = mcpEndpointsUpdateMcpEndpointFlags.String("project-slug-input", "", "") - mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags = flag.NewFlagSet("check-mcp-endpoint-slug-availability", flag.ExitOnError) - mcpEndpointsCheckMcpEndpointSlugAvailabilitySlugFlag = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.String("slug", "REQUIRED", "") - mcpEndpointsCheckMcpEndpointSlugAvailabilityCustomDomainIDFlag = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.String("custom-domain-id", "", "") - mcpEndpointsCheckMcpEndpointSlugAvailabilitySessionTokenFlag = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.String("session-token", "", "") - mcpEndpointsCheckMcpEndpointSlugAvailabilityApikeyTokenFlag = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.String("apikey-token", "", "") - mcpEndpointsCheckMcpEndpointSlugAvailabilityProjectSlugInputFlag = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.String("project-slug-input", "", "") - mcpEndpointsDeleteMcpEndpointFlags = flag.NewFlagSet("delete-mcp-endpoint", flag.ExitOnError) mcpEndpointsDeleteMcpEndpointIDFlag = mcpEndpointsDeleteMcpEndpointFlags.String("id", "REQUIRED", "") mcpEndpointsDeleteMcpEndpointSessionTokenFlag = mcpEndpointsDeleteMcpEndpointFlags.String("session-token", "", "") @@ -853,8 +801,7 @@ func ParseEndpoint( mcpServersCreateMcpServerProjectSlugInputFlag = mcpServersCreateMcpServerFlags.String("project-slug-input", "", "") mcpServersGetMcpServerFlags = flag.NewFlagSet("get-mcp-server", flag.ExitOnError) - mcpServersGetMcpServerIDFlag = mcpServersGetMcpServerFlags.String("id", "", "") - mcpServersGetMcpServerSlugFlag = mcpServersGetMcpServerFlags.String("slug", "", "") + mcpServersGetMcpServerIDFlag = mcpServersGetMcpServerFlags.String("id", "REQUIRED", "") mcpServersGetMcpServerSessionTokenFlag = mcpServersGetMcpServerFlags.String("session-token", "", "") mcpServersGetMcpServerApikeyTokenFlag = mcpServersGetMcpServerFlags.String("apikey-token", "", "") mcpServersGetMcpServerProjectSlugInputFlag = mcpServersGetMcpServerFlags.String("project-slug-input", "", "") @@ -1176,6 +1123,12 @@ func ParseEndpoint( remoteSessionIssuersCreateRemoteSessionIssuerApikeyTokenFlag = remoteSessionIssuersCreateRemoteSessionIssuerFlags.String("apikey-token", "", "") remoteSessionIssuersCreateRemoteSessionIssuerProjectSlugInputFlag = remoteSessionIssuersCreateRemoteSessionIssuerFlags.String("project-slug-input", "", "") + remoteSessionIssuersRegisterRemoteSessionIssuerFlags = flag.NewFlagSet("register-remote-session-issuer", flag.ExitOnError) + remoteSessionIssuersRegisterRemoteSessionIssuerBodyFlag = remoteSessionIssuersRegisterRemoteSessionIssuerFlags.String("body", "REQUIRED", "") + remoteSessionIssuersRegisterRemoteSessionIssuerSessionTokenFlag = remoteSessionIssuersRegisterRemoteSessionIssuerFlags.String("session-token", "", "") + remoteSessionIssuersRegisterRemoteSessionIssuerApikeyTokenFlag = remoteSessionIssuersRegisterRemoteSessionIssuerFlags.String("apikey-token", "", "") + remoteSessionIssuersRegisterRemoteSessionIssuerProjectSlugInputFlag = remoteSessionIssuersRegisterRemoteSessionIssuerFlags.String("project-slug-input", "", "") + remoteSessionIssuersUpdateRemoteSessionIssuerFlags = flag.NewFlagSet("update-remote-session-issuer", flag.ExitOnError) remoteSessionIssuersUpdateRemoteSessionIssuerBodyFlag = remoteSessionIssuersUpdateRemoteSessionIssuerFlags.String("body", "REQUIRED", "") remoteSessionIssuersUpdateRemoteSessionIssuerSessionTokenFlag = remoteSessionIssuersUpdateRemoteSessionIssuerFlags.String("session-token", "", "") @@ -1267,17 +1220,21 @@ func ParseEndpoint( riskListRiskResultsFlags = flag.NewFlagSet("list-risk-results", flag.ExitOnError) riskListRiskResultsPolicyIDFlag = riskListRiskResultsFlags.String("policy-id", "", "") riskListRiskResultsChatIDFlag = riskListRiskResultsFlags.String("chat-id", "", "") - riskListRiskResultsCategoryFlag = riskListRiskResultsFlags.String("category", "", "") - riskListRiskResultsRuleIDFlag = riskListRiskResultsFlags.String("rule-id", "", "") - riskListRiskResultsUniqueMatchFlag = riskListRiskResultsFlags.String("unique-match", "", "") - riskListRiskResultsFromFlag = riskListRiskResultsFlags.String("from", "", "") - riskListRiskResultsToFlag = riskListRiskResultsFlags.String("to", "", "") riskListRiskResultsCursorFlag = riskListRiskResultsFlags.String("cursor", "", "") riskListRiskResultsLimitFlag = riskListRiskResultsFlags.String("limit", "", "") riskListRiskResultsApikeyTokenFlag = riskListRiskResultsFlags.String("apikey-token", "", "") riskListRiskResultsSessionTokenFlag = riskListRiskResultsFlags.String("session-token", "", "") riskListRiskResultsProjectSlugInputFlag = riskListRiskResultsFlags.String("project-slug-input", "", "") + riskListRiskResultsForAgentFlags = flag.NewFlagSet("list-risk-results-for-agent", flag.ExitOnError) + riskListRiskResultsForAgentPolicyIDFlag = riskListRiskResultsForAgentFlags.String("policy-id", "", "") + riskListRiskResultsForAgentChatIDFlag = riskListRiskResultsForAgentFlags.String("chat-id", "", "") + riskListRiskResultsForAgentCursorFlag = riskListRiskResultsForAgentFlags.String("cursor", "", "") + riskListRiskResultsForAgentLimitFlag = riskListRiskResultsForAgentFlags.String("limit", "", "") + riskListRiskResultsForAgentApikeyTokenFlag = riskListRiskResultsForAgentFlags.String("apikey-token", "", "") + riskListRiskResultsForAgentSessionTokenFlag = riskListRiskResultsForAgentFlags.String("session-token", "", "") + riskListRiskResultsForAgentProjectSlugInputFlag = riskListRiskResultsForAgentFlags.String("project-slug-input", "", "") + riskListRiskResultsByChatFlags = flag.NewFlagSet("list-risk-results-by-chat", flag.ExitOnError) riskListRiskResultsByChatCursorFlag = riskListRiskResultsByChatFlags.String("cursor", "", "") riskListRiskResultsByChatLimitFlag = riskListRiskResultsByChatFlags.String("limit", "", "") @@ -1285,34 +1242,6 @@ func ParseEndpoint( riskListRiskResultsByChatSessionTokenFlag = riskListRiskResultsByChatFlags.String("session-token", "", "") riskListRiskResultsByChatProjectSlugInputFlag = riskListRiskResultsByChatFlags.String("project-slug-input", "", "") - riskGetRiskOverviewFlags = flag.NewFlagSet("get-risk-overview", flag.ExitOnError) - riskGetRiskOverviewFromFlag = riskGetRiskOverviewFlags.String("from", "", "") - riskGetRiskOverviewToFlag = riskGetRiskOverviewFlags.String("to", "", "") - riskGetRiskOverviewApikeyTokenFlag = riskGetRiskOverviewFlags.String("apikey-token", "", "") - riskGetRiskOverviewSessionTokenFlag = riskGetRiskOverviewFlags.String("session-token", "", "") - riskGetRiskOverviewProjectSlugInputFlag = riskGetRiskOverviewFlags.String("project-slug-input", "", "") - - riskListRiskCategoriesFlags = flag.NewFlagSet("list-risk-categories", flag.ExitOnError) - riskListRiskCategoriesApikeyTokenFlag = riskListRiskCategoriesFlags.String("apikey-token", "", "") - riskListRiskCategoriesSessionTokenFlag = riskListRiskCategoriesFlags.String("session-token", "", "") - riskListRiskCategoriesProjectSlugInputFlag = riskListRiskCategoriesFlags.String("project-slug-input", "", "") - - riskGetRiskUserBreakdownFlags = flag.NewFlagSet("get-risk-user-breakdown", flag.ExitOnError) - riskGetRiskUserBreakdownExternalUserIDFlag = riskGetRiskUserBreakdownFlags.String("external-user-id", "REQUIRED", "") - riskGetRiskUserBreakdownFromFlag = riskGetRiskUserBreakdownFlags.String("from", "", "") - riskGetRiskUserBreakdownToFlag = riskGetRiskUserBreakdownFlags.String("to", "", "") - riskGetRiskUserBreakdownApikeyTokenFlag = riskGetRiskUserBreakdownFlags.String("apikey-token", "", "") - riskGetRiskUserBreakdownSessionTokenFlag = riskGetRiskUserBreakdownFlags.String("session-token", "", "") - riskGetRiskUserBreakdownProjectSlugInputFlag = riskGetRiskUserBreakdownFlags.String("project-slug-input", "", "") - - riskGetRiskRuleBreakdownFlags = flag.NewFlagSet("get-risk-rule-breakdown", flag.ExitOnError) - riskGetRiskRuleBreakdownCategoryFlag = riskGetRiskRuleBreakdownFlags.String("category", "REQUIRED", "") - riskGetRiskRuleBreakdownFromFlag = riskGetRiskRuleBreakdownFlags.String("from", "", "") - riskGetRiskRuleBreakdownToFlag = riskGetRiskRuleBreakdownFlags.String("to", "", "") - riskGetRiskRuleBreakdownApikeyTokenFlag = riskGetRiskRuleBreakdownFlags.String("apikey-token", "", "") - riskGetRiskRuleBreakdownSessionTokenFlag = riskGetRiskRuleBreakdownFlags.String("session-token", "", "") - riskGetRiskRuleBreakdownProjectSlugInputFlag = riskGetRiskRuleBreakdownFlags.String("project-slug-input", "", "") - riskGetRiskPolicyStatusFlags = flag.NewFlagSet("get-risk-policy-status", flag.ExitOnError) riskGetRiskPolicyStatusIDFlag = riskGetRiskPolicyStatusFlags.String("id", "REQUIRED", "") riskGetRiskPolicyStatusApikeyTokenFlag = riskGetRiskPolicyStatusFlags.String("apikey-token", "", "") @@ -1776,7 +1705,7 @@ func ParseEndpoint( accessListScopesFlags.Usage = accessListScopesUsage accessListMembersFlags.Usage = accessListMembersUsage accessListGrantsFlags.Usage = accessListGrantsUsage - accessUpdateMemberRolesFlags.Usage = accessUpdateMemberRolesUsage + accessUpdateMemberRoleFlags.Usage = accessUpdateMemberRoleUsage accessGetRBACStatusFlags.Usage = accessGetRBACStatusUsage accessEnableRBACFlags.Usage = accessEnableRBACUsage accessDisableRBACFlags.Usage = accessDisableRBACUsage @@ -1785,15 +1714,7 @@ func ParseEndpoint( accessResolveChallengeFlags.Usage = accessResolveChallengeUsage adminFlags.Usage = adminUsage - adminLoginFlags.Usage = adminLoginUsage - adminCallbackFlags.Usage = adminCallbackUsage - adminLogoutFlags.Usage = adminLogoutUsage - adminGetProjectFlags.Usage = adminGetProjectUsage - adminUpdateOrganizationFlags.Usage = adminUpdateOrganizationUsage - adminGetOrganizationFlags.Usage = adminGetOrganizationUsage - adminListOrganizationMembersFlags.Usage = adminListOrganizationMembersUsage - adminListOrganizationProjectsFlags.Usage = adminListOrganizationProjectsUsage - adminListOrganizationsFlags.Usage = adminListOrganizationsUsage + adminPokeFlags.Usage = adminPokeUsage assetsFlags.Usage = assetsUsage assetsServeImageFlags.Usage = assetsServeImageUsage @@ -1860,7 +1781,6 @@ func ParseEndpoint( domainsGetDomainFlags.Usage = domainsGetDomainUsage domainsCreateDomainFlags.Usage = domainsCreateDomainUsage domainsDeleteDomainFlags.Usage = domainsDeleteDomainUsage - domainsListMcpEndpointsFlags.Usage = domainsListMcpEndpointsUsage environmentsFlags.Usage = environmentsUsage environmentsCreateEnvironmentFlags.Usage = environmentsCreateEnvironmentUsage @@ -1923,7 +1843,6 @@ func ParseEndpoint( mcpEndpointsGetMcpEndpointFlags.Usage = mcpEndpointsGetMcpEndpointUsage mcpEndpointsListMcpEndpointsFlags.Usage = mcpEndpointsListMcpEndpointsUsage mcpEndpointsUpdateMcpEndpointFlags.Usage = mcpEndpointsUpdateMcpEndpointUsage - mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.Usage = mcpEndpointsCheckMcpEndpointSlugAvailabilityUsage mcpEndpointsDeleteMcpEndpointFlags.Usage = mcpEndpointsDeleteMcpEndpointUsage mcpMetadataFlags.Usage = mcpMetadataUsage @@ -2011,6 +1930,7 @@ func ParseEndpoint( remoteSessionIssuersFlags.Usage = remoteSessionIssuersUsage remoteSessionIssuersDiscoverRemoteSessionIssuerFlags.Usage = remoteSessionIssuersDiscoverRemoteSessionIssuerUsage remoteSessionIssuersCreateRemoteSessionIssuerFlags.Usage = remoteSessionIssuersCreateRemoteSessionIssuerUsage + remoteSessionIssuersRegisterRemoteSessionIssuerFlags.Usage = remoteSessionIssuersRegisterRemoteSessionIssuerUsage remoteSessionIssuersUpdateRemoteSessionIssuerFlags.Usage = remoteSessionIssuersUpdateRemoteSessionIssuerUsage remoteSessionIssuersListRemoteSessionIssuersFlags.Usage = remoteSessionIssuersListRemoteSessionIssuersUsage remoteSessionIssuersGetRemoteSessionIssuerFlags.Usage = remoteSessionIssuersGetRemoteSessionIssuerUsage @@ -2031,11 +1951,8 @@ func ParseEndpoint( riskUpdateRiskPolicyFlags.Usage = riskUpdateRiskPolicyUsage riskDeleteRiskPolicyFlags.Usage = riskDeleteRiskPolicyUsage riskListRiskResultsFlags.Usage = riskListRiskResultsUsage + riskListRiskResultsForAgentFlags.Usage = riskListRiskResultsForAgentUsage riskListRiskResultsByChatFlags.Usage = riskListRiskResultsByChatUsage - riskGetRiskOverviewFlags.Usage = riskGetRiskOverviewUsage - riskListRiskCategoriesFlags.Usage = riskListRiskCategoriesUsage - riskGetRiskUserBreakdownFlags.Usage = riskGetRiskUserBreakdownUsage - riskGetRiskRuleBreakdownFlags.Usage = riskGetRiskRuleBreakdownUsage riskGetRiskPolicyStatusFlags.Usage = riskGetRiskPolicyStatusUsage riskListShadowMCPApprovalsFlags.Usage = riskListShadowMCPApprovalsUsage riskApproveShadowMCPFlags.Usage = riskApproveShadowMCPUsage @@ -2302,8 +2219,8 @@ func ParseEndpoint( case "list-grants": epf = accessListGrantsFlags - case "update-member-roles": - epf = accessUpdateMemberRolesFlags + case "update-member-role": + epf = accessUpdateMemberRoleFlags case "get-rbac-status": epf = accessGetRBACStatusFlags @@ -2327,32 +2244,8 @@ func ParseEndpoint( case "admin": switch epn { - case "login": - epf = adminLoginFlags - - case "callback": - epf = adminCallbackFlags - - case "logout": - epf = adminLogoutFlags - - case "get-project": - epf = adminGetProjectFlags - - case "update-organization": - epf = adminUpdateOrganizationFlags - - case "get-organization": - epf = adminGetOrganizationFlags - - case "list-organization-members": - epf = adminListOrganizationMembersFlags - - case "list-organization-projects": - epf = adminListOrganizationProjectsFlags - - case "list-organizations": - epf = adminListOrganizationsFlags + case "poke": + epf = adminPokeFlags } @@ -2534,9 +2427,6 @@ func ParseEndpoint( case "delete-domain": epf = domainsDeleteDomainFlags - case "list-mcp-endpoints": - epf = domainsListMcpEndpointsFlags - } case "environments": @@ -2703,9 +2593,6 @@ func ParseEndpoint( case "update-mcp-endpoint": epf = mcpEndpointsUpdateMcpEndpointFlags - case "check-mcp-endpoint-slug-availability": - epf = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags - case "delete-mcp-endpoint": epf = mcpEndpointsDeleteMcpEndpointFlags @@ -2945,6 +2832,9 @@ func ParseEndpoint( case "create-remote-session-issuer": epf = remoteSessionIssuersCreateRemoteSessionIssuerFlags + case "register-remote-session-issuer": + epf = remoteSessionIssuersRegisterRemoteSessionIssuerFlags + case "update-remote-session-issuer": epf = remoteSessionIssuersUpdateRemoteSessionIssuerFlags @@ -2999,21 +2889,12 @@ func ParseEndpoint( case "list-risk-results": epf = riskListRiskResultsFlags + case "list-risk-results-for-agent": + epf = riskListRiskResultsForAgentFlags + case "list-risk-results-by-chat": epf = riskListRiskResultsByChatFlags - case "get-risk-overview": - epf = riskGetRiskOverviewFlags - - case "list-risk-categories": - epf = riskListRiskCategoriesFlags - - case "get-risk-user-breakdown": - epf = riskGetRiskUserBreakdownFlags - - case "get-risk-rule-breakdown": - epf = riskGetRiskRuleBreakdownFlags - case "get-risk-policy-status": epf = riskGetRiskPolicyStatusFlags @@ -3346,9 +3227,9 @@ func ParseEndpoint( case "list-grants": endpoint = c.ListGrants() data, err = accessc.BuildListGrantsPayload(*accessListGrantsApikeyTokenFlag, *accessListGrantsSessionTokenFlag) - case "update-member-roles": - endpoint = c.UpdateMemberRoles() - data, err = accessc.BuildUpdateMemberRolesPayload(*accessUpdateMemberRolesBodyFlag, *accessUpdateMemberRolesApikeyTokenFlag, *accessUpdateMemberRolesSessionTokenFlag) + case "update-member-role": + endpoint = c.UpdateMemberRole() + data, err = accessc.BuildUpdateMemberRolePayload(*accessUpdateMemberRoleBodyFlag, *accessUpdateMemberRoleApikeyTokenFlag, *accessUpdateMemberRoleSessionTokenFlag) case "get-rbac-status": endpoint = c.GetRBACStatus() data, err = accessc.BuildGetRBACStatusPayload(*accessGetRBACStatusSessionTokenFlag) @@ -3371,33 +3252,8 @@ func ParseEndpoint( case "admin": c := adminc.NewClient(scheme, host, doer, enc, dec, restore) switch epn { - case "login": - endpoint = c.Login() - data, err = adminc.BuildLoginPayload(*adminLoginReturnToFlag, *adminLoginPromptFlag) - case "callback": - endpoint = c.Callback() - data, err = adminc.BuildCallbackPayload(*adminCallbackCodeFlag, *adminCallbackStateParamFlag, *adminCallbackErrorFlag, *adminCallbackErrorDescriptionFlag, *adminCallbackStateCookieFlag) - case "logout": - endpoint = c.Logout() - data, err = adminc.BuildLogoutPayload(*adminLogoutSessionIDFlag) - case "get-project": - endpoint = c.GetProject() - data, err = adminc.BuildGetProjectPayload(*adminGetProjectIDOrSlugFlag, *adminGetProjectAdminSessionTokenFlag) - case "update-organization": - endpoint = c.UpdateOrganization() - data, err = adminc.BuildUpdateOrganizationPayload(*adminUpdateOrganizationBodyFlag, *adminUpdateOrganizationAdminSessionTokenFlag) - case "get-organization": - endpoint = c.GetOrganization() - data, err = adminc.BuildGetOrganizationPayload(*adminGetOrganizationIDOrSlugFlag, *adminGetOrganizationAdminSessionTokenFlag) - case "list-organization-members": - endpoint = c.ListOrganizationMembers() - data, err = adminc.BuildListOrganizationMembersPayload(*adminListOrganizationMembersOrganizationIDFlag, *adminListOrganizationMembersAdminSessionTokenFlag) - case "list-organization-projects": - endpoint = c.ListOrganizationProjects() - data, err = adminc.BuildListOrganizationProjectsPayload(*adminListOrganizationProjectsOrganizationIDFlag, *adminListOrganizationProjectsAdminSessionTokenFlag) - case "list-organizations": - endpoint = c.ListOrganizations() - data, err = adminc.BuildListOrganizationsPayload(*adminListOrganizationsQFlag, *adminListOrganizationsAccountTypeFlag, *adminListOrganizationsIncludeDisabledFlag, *adminListOrganizationsCursorFlag, *adminListOrganizationsLimitFlag, *adminListOrganizationsAdminSessionTokenFlag) + case "poke": + endpoint = c.Poke() } case "assets": c := assetsc.NewClient(scheme, host, doer, enc, dec, restore) @@ -3532,7 +3388,7 @@ func ParseEndpoint( data, err = chatc.BuildCreditUsagePayload(*chatCreditUsageSessionTokenFlag) case "list-chats-with-resolutions": endpoint = c.ListChatsWithResolutions() - data, err = chatc.BuildListChatsWithResolutionsPayload(*chatListChatsWithResolutionsSearchFlag, *chatListChatsWithResolutionsExternalUserIDFlag, *chatListChatsWithResolutionsAssistantIDFlag, *chatListChatsWithResolutionsResolutionStatusFlag, *chatListChatsWithResolutionsHasRiskFlag, *chatListChatsWithResolutionsFromFlag, *chatListChatsWithResolutionsToFlag, *chatListChatsWithResolutionsLimitFlag, *chatListChatsWithResolutionsOffsetFlag, *chatListChatsWithResolutionsSortByFlag, *chatListChatsWithResolutionsSortOrderFlag, *chatListChatsWithResolutionsSessionTokenFlag, *chatListChatsWithResolutionsProjectSlugInputFlag, *chatListChatsWithResolutionsChatSessionsTokenFlag) + data, err = chatc.BuildListChatsWithResolutionsPayload(*chatListChatsWithResolutionsSearchFlag, *chatListChatsWithResolutionsExternalUserIDFlag, *chatListChatsWithResolutionsResolutionStatusFlag, *chatListChatsWithResolutionsFromFlag, *chatListChatsWithResolutionsToFlag, *chatListChatsWithResolutionsLimitFlag, *chatListChatsWithResolutionsOffsetFlag, *chatListChatsWithResolutionsSortByFlag, *chatListChatsWithResolutionsSortOrderFlag, *chatListChatsWithResolutionsSessionTokenFlag, *chatListChatsWithResolutionsProjectSlugInputFlag, *chatListChatsWithResolutionsChatSessionsTokenFlag) case "delete-chat": endpoint = c.DeleteChat() data, err = chatc.BuildDeleteChatPayload(*chatDeleteChatIDFlag, *chatDeleteChatSessionTokenFlag, *chatDeleteChatProjectSlugInputFlag) @@ -3590,9 +3446,6 @@ func ParseEndpoint( case "delete-domain": endpoint = c.DeleteDomain() data, err = domainsc.BuildDeleteDomainPayload(*domainsDeleteDomainSessionTokenFlag) - case "list-mcp-endpoints": - endpoint = c.ListMcpEndpoints() - data, err = domainsc.BuildListMcpEndpointsPayload(*domainsListMcpEndpointsSessionTokenFlag) } case "environments": c := environmentsc.NewClient(scheme, host, doer, enc, dec, restore) @@ -3759,9 +3612,6 @@ func ParseEndpoint( case "update-mcp-endpoint": endpoint = c.UpdateMcpEndpoint() data, err = mcpendpointsc.BuildUpdateMcpEndpointPayload(*mcpEndpointsUpdateMcpEndpointBodyFlag, *mcpEndpointsUpdateMcpEndpointSessionTokenFlag, *mcpEndpointsUpdateMcpEndpointApikeyTokenFlag, *mcpEndpointsUpdateMcpEndpointProjectSlugInputFlag) - case "check-mcp-endpoint-slug-availability": - endpoint = c.CheckMcpEndpointSlugAvailability() - data, err = mcpendpointsc.BuildCheckMcpEndpointSlugAvailabilityPayload(*mcpEndpointsCheckMcpEndpointSlugAvailabilitySlugFlag, *mcpEndpointsCheckMcpEndpointSlugAvailabilityCustomDomainIDFlag, *mcpEndpointsCheckMcpEndpointSlugAvailabilitySessionTokenFlag, *mcpEndpointsCheckMcpEndpointSlugAvailabilityApikeyTokenFlag, *mcpEndpointsCheckMcpEndpointSlugAvailabilityProjectSlugInputFlag) case "delete-mcp-endpoint": endpoint = c.DeleteMcpEndpoint() data, err = mcpendpointsc.BuildDeleteMcpEndpointPayload(*mcpEndpointsDeleteMcpEndpointIDFlag, *mcpEndpointsDeleteMcpEndpointSessionTokenFlag, *mcpEndpointsDeleteMcpEndpointApikeyTokenFlag, *mcpEndpointsDeleteMcpEndpointProjectSlugInputFlag) @@ -3787,7 +3637,7 @@ func ParseEndpoint( data, err = mcpserversc.BuildCreateMcpServerPayload(*mcpServersCreateMcpServerBodyFlag, *mcpServersCreateMcpServerSessionTokenFlag, *mcpServersCreateMcpServerApikeyTokenFlag, *mcpServersCreateMcpServerProjectSlugInputFlag) case "get-mcp-server": endpoint = c.GetMcpServer() - data, err = mcpserversc.BuildGetMcpServerPayload(*mcpServersGetMcpServerIDFlag, *mcpServersGetMcpServerSlugFlag, *mcpServersGetMcpServerSessionTokenFlag, *mcpServersGetMcpServerApikeyTokenFlag, *mcpServersGetMcpServerProjectSlugInputFlag) + data, err = mcpserversc.BuildGetMcpServerPayload(*mcpServersGetMcpServerIDFlag, *mcpServersGetMcpServerSessionTokenFlag, *mcpServersGetMcpServerApikeyTokenFlag, *mcpServersGetMcpServerProjectSlugInputFlag) case "list-mcp-servers": endpoint = c.ListMcpServers() data, err = mcpserversc.BuildListMcpServersPayload(*mcpServersListMcpServersRemoteMcpServerIDFlag, *mcpServersListMcpServersToolsetIDFlag, *mcpServersListMcpServersSessionTokenFlag, *mcpServersListMcpServersApikeyTokenFlag, *mcpServersListMcpServersProjectSlugInputFlag) @@ -4001,6 +3851,9 @@ func ParseEndpoint( case "create-remote-session-issuer": endpoint = c.CreateRemoteSessionIssuer() data, err = remotesessionissuersc.BuildCreateRemoteSessionIssuerPayload(*remoteSessionIssuersCreateRemoteSessionIssuerBodyFlag, *remoteSessionIssuersCreateRemoteSessionIssuerSessionTokenFlag, *remoteSessionIssuersCreateRemoteSessionIssuerApikeyTokenFlag, *remoteSessionIssuersCreateRemoteSessionIssuerProjectSlugInputFlag) + case "register-remote-session-issuer": + endpoint = c.RegisterRemoteSessionIssuer() + data, err = remotesessionissuersc.BuildRegisterRemoteSessionIssuerPayload(*remoteSessionIssuersRegisterRemoteSessionIssuerBodyFlag, *remoteSessionIssuersRegisterRemoteSessionIssuerSessionTokenFlag, *remoteSessionIssuersRegisterRemoteSessionIssuerApikeyTokenFlag, *remoteSessionIssuersRegisterRemoteSessionIssuerProjectSlugInputFlag) case "update-remote-session-issuer": endpoint = c.UpdateRemoteSessionIssuer() data, err = remotesessionissuersc.BuildUpdateRemoteSessionIssuerPayload(*remoteSessionIssuersUpdateRemoteSessionIssuerBodyFlag, *remoteSessionIssuersUpdateRemoteSessionIssuerSessionTokenFlag, *remoteSessionIssuersUpdateRemoteSessionIssuerApikeyTokenFlag, *remoteSessionIssuersUpdateRemoteSessionIssuerProjectSlugInputFlag) @@ -4054,22 +3907,13 @@ func ParseEndpoint( data, err = riskc.BuildDeleteRiskPolicyPayload(*riskDeleteRiskPolicyIDFlag, *riskDeleteRiskPolicyApikeyTokenFlag, *riskDeleteRiskPolicySessionTokenFlag, *riskDeleteRiskPolicyProjectSlugInputFlag) case "list-risk-results": endpoint = c.ListRiskResults() - data, err = riskc.BuildListRiskResultsPayload(*riskListRiskResultsPolicyIDFlag, *riskListRiskResultsChatIDFlag, *riskListRiskResultsCategoryFlag, *riskListRiskResultsRuleIDFlag, *riskListRiskResultsUniqueMatchFlag, *riskListRiskResultsFromFlag, *riskListRiskResultsToFlag, *riskListRiskResultsCursorFlag, *riskListRiskResultsLimitFlag, *riskListRiskResultsApikeyTokenFlag, *riskListRiskResultsSessionTokenFlag, *riskListRiskResultsProjectSlugInputFlag) + data, err = riskc.BuildListRiskResultsPayload(*riskListRiskResultsPolicyIDFlag, *riskListRiskResultsChatIDFlag, *riskListRiskResultsCursorFlag, *riskListRiskResultsLimitFlag, *riskListRiskResultsApikeyTokenFlag, *riskListRiskResultsSessionTokenFlag, *riskListRiskResultsProjectSlugInputFlag) + case "list-risk-results-for-agent": + endpoint = c.ListRiskResultsForAgent() + data, err = riskc.BuildListRiskResultsForAgentPayload(*riskListRiskResultsForAgentPolicyIDFlag, *riskListRiskResultsForAgentChatIDFlag, *riskListRiskResultsForAgentCursorFlag, *riskListRiskResultsForAgentLimitFlag, *riskListRiskResultsForAgentApikeyTokenFlag, *riskListRiskResultsForAgentSessionTokenFlag, *riskListRiskResultsForAgentProjectSlugInputFlag) case "list-risk-results-by-chat": endpoint = c.ListRiskResultsByChat() data, err = riskc.BuildListRiskResultsByChatPayload(*riskListRiskResultsByChatCursorFlag, *riskListRiskResultsByChatLimitFlag, *riskListRiskResultsByChatApikeyTokenFlag, *riskListRiskResultsByChatSessionTokenFlag, *riskListRiskResultsByChatProjectSlugInputFlag) - case "get-risk-overview": - endpoint = c.GetRiskOverview() - data, err = riskc.BuildGetRiskOverviewPayload(*riskGetRiskOverviewFromFlag, *riskGetRiskOverviewToFlag, *riskGetRiskOverviewApikeyTokenFlag, *riskGetRiskOverviewSessionTokenFlag, *riskGetRiskOverviewProjectSlugInputFlag) - case "list-risk-categories": - endpoint = c.ListRiskCategories() - data, err = riskc.BuildListRiskCategoriesPayload(*riskListRiskCategoriesApikeyTokenFlag, *riskListRiskCategoriesSessionTokenFlag, *riskListRiskCategoriesProjectSlugInputFlag) - case "get-risk-user-breakdown": - endpoint = c.GetRiskUserBreakdown() - data, err = riskc.BuildGetRiskUserBreakdownPayload(*riskGetRiskUserBreakdownExternalUserIDFlag, *riskGetRiskUserBreakdownFromFlag, *riskGetRiskUserBreakdownToFlag, *riskGetRiskUserBreakdownApikeyTokenFlag, *riskGetRiskUserBreakdownSessionTokenFlag, *riskGetRiskUserBreakdownProjectSlugInputFlag) - case "get-risk-rule-breakdown": - endpoint = c.GetRiskRuleBreakdown() - data, err = riskc.BuildGetRiskRuleBreakdownPayload(*riskGetRiskRuleBreakdownCategoryFlag, *riskGetRiskRuleBreakdownFromFlag, *riskGetRiskRuleBreakdownToFlag, *riskGetRiskRuleBreakdownApikeyTokenFlag, *riskGetRiskRuleBreakdownSessionTokenFlag, *riskGetRiskRuleBreakdownProjectSlugInputFlag) case "get-risk-policy-status": endpoint = c.GetRiskPolicyStatus() data, err = riskc.BuildGetRiskPolicyStatusPayload(*riskGetRiskPolicyStatusIDFlag, *riskGetRiskPolicyStatusApikeyTokenFlag, *riskGetRiskPolicyStatusSessionTokenFlag, *riskGetRiskPolicyStatusProjectSlugInputFlag) @@ -4415,7 +4259,7 @@ func accessUsage() { fmt.Fprintln(os.Stderr, ` list-scopes: List all available scopes and their resource types.`) fmt.Fprintln(os.Stderr, ` list-members: List all team members with their role assignments.`) fmt.Fprintln(os.Stderr, ` list-grants: List the current user's effective grants, including inherited role grants.`) - fmt.Fprintln(os.Stderr, ` update-member-roles: Update a team member's role assignments.`) + fmt.Fprintln(os.Stderr, ` update-member-role: Change a team member's role assignment.`) fmt.Fprintln(os.Stderr, ` get-rbac-status: Returns whether RBAC is currently enabled for the current organization.`) fmt.Fprintln(os.Stderr, ` enable-rbac: Enable RBAC for the current organization. Seeds default grants for system roles.`) fmt.Fprintln(os.Stderr, ` disable-rbac: Disable RBAC enforcement for the current organization.`) @@ -4594,9 +4438,9 @@ func accessListGrantsUsage() { fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "access list-grants --apikey-token \"abc123\" --session-token \"abc123\"") } -func accessUpdateMemberRolesUsage() { +func accessUpdateMemberRoleUsage() { // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] access update-member-roles", os.Args[0]) + fmt.Fprintf(os.Stderr, "%s [flags] access update-member-role", os.Args[0]) fmt.Fprint(os.Stderr, " -body JSON") fmt.Fprint(os.Stderr, " -apikey-token STRING") fmt.Fprint(os.Stderr, " -session-token STRING") @@ -4604,7 +4448,7 @@ func accessUpdateMemberRolesUsage() { // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Update a team member's role assignments.`) + fmt.Fprintln(os.Stderr, `Change a team member's role assignment.`) // Flags list fmt.Fprintln(os.Stderr, ` -body JSON: `) @@ -4613,7 +4457,7 @@ func accessUpdateMemberRolesUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "access update-member-roles --body '{\n \"role_ids\": [\n \"abc123\"\n ],\n \"user_id\": \"abc123\"\n }' --apikey-token \"abc123\" --session-token \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "access update-member-role --body '{\n \"role_id\": \"abc123\",\n \"user_id\": \"abc123\"\n }' --apikey-token \"abc123\" --session-token \"abc123\"") } func accessGetRBACStatusUsage() { @@ -4764,212 +4608,28 @@ func accessResolveChallengeUsage() { // adminUsage displays the usage of the admin command and its subcommands. func adminUsage() { - fmt.Fprintln(os.Stderr, `Operations supporting admin tasks, protected by Google workspace auth.`) + fmt.Fprintln(os.Stderr, `Operational endpoints for administrative tasks.`) fmt.Fprintf(os.Stderr, "Usage:\n %s [globalflags] admin COMMAND [flags]\n\n", os.Args[0]) fmt.Fprintln(os.Stderr, "COMMAND:") - fmt.Fprintln(os.Stderr, ` login: Login implements login.`) - fmt.Fprintln(os.Stderr, ` callback: Callback implements callback.`) - fmt.Fprintln(os.Stderr, ` logout: Logout implements logout.`) - fmt.Fprintln(os.Stderr, ` get-project: Returns full admin details for a project by id or slug, including aggregated counts of child resources.`) - fmt.Fprintln(os.Stderr, ` update-organization: Updates admin-managed fields on an organization. At least one of account_type or whitelisted must be supplied.`) - fmt.Fprintln(os.Stderr, ` get-organization: Returns full admin details for a single organization by id or slug.`) - fmt.Fprintln(os.Stderr, ` list-organization-members: Lists members of an organization (admin view, no auth scoping).`) - fmt.Fprintln(os.Stderr, ` list-organization-projects: Lists projects belonging to an organization (admin view, no auth scoping).`) - fmt.Fprintln(os.Stderr, ` list-organizations: Lists organizations for admin operations with optional search and filters.`) + fmt.Fprintln(os.Stderr, ` poke: Poke implements poke.`) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Additional help:") fmt.Fprintf(os.Stderr, " %s admin COMMAND --help\n", os.Args[0]) } -func adminLoginUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] admin login", os.Args[0]) - fmt.Fprint(os.Stderr, " -return-to STRING") - fmt.Fprint(os.Stderr, " -prompt STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Login implements login.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -return-to STRING: `) - fmt.Fprintln(os.Stderr, ` -prompt STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin login --return-to \"abc123\" --prompt \"abc123\"") -} - -func adminCallbackUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] admin callback", os.Args[0]) - fmt.Fprint(os.Stderr, " -code STRING") - fmt.Fprint(os.Stderr, " -state-param STRING") - fmt.Fprint(os.Stderr, " -error STRING") - fmt.Fprint(os.Stderr, " -error-description STRING") - fmt.Fprint(os.Stderr, " -state-cookie STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Callback implements callback.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -code STRING: `) - fmt.Fprintln(os.Stderr, ` -state-param STRING: `) - fmt.Fprintln(os.Stderr, ` -error STRING: `) - fmt.Fprintln(os.Stderr, ` -error-description STRING: `) - fmt.Fprintln(os.Stderr, ` -state-cookie STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin callback --code \"abc123\" --state-param \"abc123\" --error \"abc123\" --error-description \"abc123\" --state-cookie \"abc123\"") -} - -func adminLogoutUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] admin logout", os.Args[0]) - fmt.Fprint(os.Stderr, " -session-id STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Logout implements logout.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -session-id STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin logout --session-id \"abc123\"") -} - -func adminGetProjectUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] admin get-project", os.Args[0]) - fmt.Fprint(os.Stderr, " -id-or-slug STRING") - fmt.Fprint(os.Stderr, " -admin-session-token STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Returns full admin details for a project by id or slug, including aggregated counts of child resources.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -id-or-slug STRING: `) - fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin get-project --id-or-slug \"abc123\" --admin-session-token \"abc123\"") -} - -func adminUpdateOrganizationUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] admin update-organization", os.Args[0]) - fmt.Fprint(os.Stderr, " -body JSON") - fmt.Fprint(os.Stderr, " -admin-session-token STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Updates admin-managed fields on an organization. At least one of account_type or whitelisted must be supplied.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -body JSON: `) - fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin update-organization --body '{\n \"account_type\": \"abc123\",\n \"id\": \"abc123\",\n \"whitelisted\": false\n }' --admin-session-token \"abc123\"") -} - -func adminGetOrganizationUsage() { +func adminPokeUsage() { // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] admin get-organization", os.Args[0]) - fmt.Fprint(os.Stderr, " -id-or-slug STRING") - fmt.Fprint(os.Stderr, " -admin-session-token STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Returns full admin details for a single organization by id or slug.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -id-or-slug STRING: `) - fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin get-organization --id-or-slug \"abc123\" --admin-session-token \"abc123\"") -} - -func adminListOrganizationMembersUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] admin list-organization-members", os.Args[0]) - fmt.Fprint(os.Stderr, " -organization-id STRING") - fmt.Fprint(os.Stderr, " -admin-session-token STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Lists members of an organization (admin view, no auth scoping).`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -organization-id STRING: `) - fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin list-organization-members --organization-id \"abc123\" --admin-session-token \"abc123\"") -} - -func adminListOrganizationProjectsUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] admin list-organization-projects", os.Args[0]) - fmt.Fprint(os.Stderr, " -organization-id STRING") - fmt.Fprint(os.Stderr, " -admin-session-token STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Lists projects belonging to an organization (admin view, no auth scoping).`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -organization-id STRING: `) - fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin list-organization-projects --organization-id \"abc123\" --admin-session-token \"abc123\"") -} - -func adminListOrganizationsUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] admin list-organizations", os.Args[0]) - fmt.Fprint(os.Stderr, " -q STRING") - fmt.Fprint(os.Stderr, " -account-type STRING") - fmt.Fprint(os.Stderr, " -include-disabled BOOL") - fmt.Fprint(os.Stderr, " -cursor STRING") - fmt.Fprint(os.Stderr, " -limit INT") - fmt.Fprint(os.Stderr, " -admin-session-token STRING") + fmt.Fprintf(os.Stderr, "%s [flags] admin poke", os.Args[0]) fmt.Fprintln(os.Stderr) // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Lists organizations for admin operations with optional search and filters.`) + fmt.Fprintln(os.Stderr, `Poke implements poke.`) // Flags list - fmt.Fprintln(os.Stderr, ` -q STRING: `) - fmt.Fprintln(os.Stderr, ` -account-type STRING: `) - fmt.Fprintln(os.Stderr, ` -include-disabled BOOL: `) - fmt.Fprintln(os.Stderr, ` -cursor STRING: `) - fmt.Fprintln(os.Stderr, ` -limit INT: `) - fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin list-organizations --q \"abc123\" --account-type \"abc123\" --include-disabled false --cursor \"abc123\" --limit 1 --admin-session-token \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin poke") } // assetsUsage displays the usage of the assets command and its subcommands. @@ -5801,9 +5461,7 @@ func chatListChatsWithResolutionsUsage() { fmt.Fprintf(os.Stderr, "%s [flags] chat list-chats-with-resolutions", os.Args[0]) fmt.Fprint(os.Stderr, " -search STRING") fmt.Fprint(os.Stderr, " -external-user-id STRING") - fmt.Fprint(os.Stderr, " -assistant-id STRING") fmt.Fprint(os.Stderr, " -resolution-status STRING") - fmt.Fprint(os.Stderr, " -has-risk STRING") fmt.Fprint(os.Stderr, " -from STRING") fmt.Fprint(os.Stderr, " -to STRING") fmt.Fprint(os.Stderr, " -limit INT") @@ -5822,9 +5480,7 @@ func chatListChatsWithResolutionsUsage() { // Flags list fmt.Fprintln(os.Stderr, ` -search STRING: `) fmt.Fprintln(os.Stderr, ` -external-user-id STRING: `) - fmt.Fprintln(os.Stderr, ` -assistant-id STRING: `) fmt.Fprintln(os.Stderr, ` -resolution-status STRING: `) - fmt.Fprintln(os.Stderr, ` -has-risk STRING: `) fmt.Fprintln(os.Stderr, ` -from STRING: `) fmt.Fprintln(os.Stderr, ` -to STRING: `) fmt.Fprintln(os.Stderr, ` -limit INT: `) @@ -5837,7 +5493,7 @@ func chatListChatsWithResolutionsUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "chat list-chats-with-resolutions --search \"abc123\" --external-user-id \"abc123\" --assistant-id \"550e8400-e29b-41d4-a716-446655440000\" --resolution-status \"abc123\" --has-risk \"true\" --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --limit 2 --offset 1 --sort-by \"num_messages\" --sort-order \"desc\" --session-token \"abc123\" --project-slug-input \"abc123\" --chat-sessions-token \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "chat list-chats-with-resolutions --search \"abc123\" --external-user-id \"abc123\" --resolution-status \"abc123\" --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --limit 2 --offset 1 --sort-by \"num_messages\" --sort-order \"desc\" --session-token \"abc123\" --project-slug-input \"abc123\" --chat-sessions-token \"abc123\"") } func chatDeleteChatUsage() { @@ -6164,7 +5820,6 @@ func domainsUsage() { fmt.Fprintln(os.Stderr, ` get-domain: Get the custom domain for an organization`) fmt.Fprintln(os.Stderr, ` create-domain: Create a custom domain for an organization`) fmt.Fprintln(os.Stderr, ` delete-domain: Delete a custom domain`) - fmt.Fprintln(os.Stderr, ` list-mcp-endpoints: List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through.`) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Additional help:") fmt.Fprintf(os.Stderr, " %s domains COMMAND --help\n", os.Args[0]) @@ -6225,24 +5880,6 @@ func domainsDeleteDomainUsage() { fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "domains delete-domain --session-token \"abc123\"") } -func domainsListMcpEndpointsUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] domains list-mcp-endpoints", os.Args[0]) - fmt.Fprint(os.Stderr, " -session-token STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -session-token STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "domains list-mcp-endpoints --session-token \"abc123\"") -} - // environmentsUsage displays the usage of the environments command and its // subcommands. func environmentsUsage() { @@ -7227,7 +6864,6 @@ func mcpEndpointsUsage() { fmt.Fprintln(os.Stderr, ` get-mcp-endpoint: Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.`) fmt.Fprintln(os.Stderr, ` list-mcp-endpoints: List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.`) fmt.Fprintln(os.Stderr, ` update-mcp-endpoint: Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.`) - fmt.Fprintln(os.Stderr, ` check-mcp-endpoint-slug-availability: Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.`) fmt.Fprintln(os.Stderr, ` delete-mcp-endpoint: Delete an MCP endpoint`) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Additional help:") @@ -7333,32 +6969,6 @@ func mcpEndpointsUpdateMcpEndpointUsage() { fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-endpoints update-mcp-endpoint --body '{\n \"custom_domain_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"mcp_server_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"slug\": \"aaa\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } -func mcpEndpointsCheckMcpEndpointSlugAvailabilityUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] mcp-endpoints check-mcp-endpoint-slug-availability", os.Args[0]) - fmt.Fprint(os.Stderr, " -slug STRING") - fmt.Fprint(os.Stderr, " -custom-domain-id STRING") - fmt.Fprint(os.Stderr, " -session-token STRING") - fmt.Fprint(os.Stderr, " -apikey-token STRING") - fmt.Fprint(os.Stderr, " -project-slug-input STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -slug STRING: `) - fmt.Fprintln(os.Stderr, ` -custom-domain-id STRING: `) - fmt.Fprintln(os.Stderr, ` -session-token STRING: `) - fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) - fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-endpoints check-mcp-endpoint-slug-availability --slug \"aaa\" --custom-domain-id \"550e8400-e29b-41d4-a716-446655440000\" --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") -} - func mcpEndpointsDeleteMcpEndpointUsage() { // Header with flags fmt.Fprintf(os.Stderr, "%s [flags] mcp-endpoints delete-mcp-endpoint", os.Args[0]) @@ -7475,9 +7085,9 @@ func mcpServersUsage() { fmt.Fprintf(os.Stderr, "Usage:\n %s [globalflags] mcp-servers COMMAND [flags]\n\n", os.Args[0]) fmt.Fprintln(os.Stderr, "COMMAND:") fmt.Fprintln(os.Stderr, ` create-mcp-server: Create a new MCP server`) - fmt.Fprintln(os.Stderr, ` get-mcp-server: Get an MCP server by ID or slug. Exactly one of id or slug must be provided.`) + fmt.Fprintln(os.Stderr, ` get-mcp-server: Get an MCP server by ID`) fmt.Fprintln(os.Stderr, ` list-mcp-servers: List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.`) - fmt.Fprintln(os.Stderr, ` update-mcp-server: Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.`) + fmt.Fprintln(os.Stderr, ` update-mcp-server: Update an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.`) fmt.Fprintln(os.Stderr, ` delete-mcp-server: Delete an MCP server`) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Additional help:") @@ -7504,14 +7114,13 @@ func mcpServersCreateMcpServerUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers create-mcp-server --body '{\n \"environment_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"name\": \"abc123\",\n \"remote_mcp_server_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"toolset_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"visibility\": \"private\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers create-mcp-server --body '{\n \"environment_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"remote_mcp_server_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"toolset_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"visibility\": \"private\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func mcpServersGetMcpServerUsage() { // Header with flags fmt.Fprintf(os.Stderr, "%s [flags] mcp-servers get-mcp-server", os.Args[0]) fmt.Fprint(os.Stderr, " -id STRING") - fmt.Fprint(os.Stderr, " -slug STRING") fmt.Fprint(os.Stderr, " -session-token STRING") fmt.Fprint(os.Stderr, " -apikey-token STRING") fmt.Fprint(os.Stderr, " -project-slug-input STRING") @@ -7519,18 +7128,17 @@ func mcpServersGetMcpServerUsage() { // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Get an MCP server by ID or slug. Exactly one of id or slug must be provided.`) + fmt.Fprintln(os.Stderr, `Get an MCP server by ID`) // Flags list fmt.Fprintln(os.Stderr, ` -id STRING: `) - fmt.Fprintln(os.Stderr, ` -slug STRING: `) fmt.Fprintln(os.Stderr, ` -session-token STRING: `) fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers get-mcp-server --id \"550e8400-e29b-41d4-a716-446655440000\" --slug \"abc123\" --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers get-mcp-server --id \"550e8400-e29b-41d4-a716-446655440000\" --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func mcpServersListMcpServersUsage() { @@ -7570,7 +7178,7 @@ func mcpServersUpdateMcpServerUsage() { // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.`) + fmt.Fprintln(os.Stderr, `Update an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.`) // Flags list fmt.Fprintln(os.Stderr, ` -body JSON: `) @@ -7580,7 +7188,7 @@ func mcpServersUpdateMcpServerUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers update-mcp-server --body '{\n \"environment_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"name\": \"abc123\",\n \"remote_mcp_server_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"toolset_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"visibility\": \"private\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers update-mcp-server --body '{\n \"environment_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"remote_mcp_server_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"toolset_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"visibility\": \"private\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func mcpServersDeleteMcpServerUsage() { @@ -8761,7 +8369,7 @@ func remoteSessionClientsUsage() { fmt.Fprintln(os.Stderr, `Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned.`) fmt.Fprintf(os.Stderr, "Usage:\n %s [globalflags] remote-session-clients COMMAND [flags]\n\n", os.Args[0]) fmt.Fprintln(os.Stderr, "COMMAND:") - fmt.Fprintln(os.Stderr, ` create-remote-session-client: Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.`) + fmt.Fprintln(os.Stderr, ` create-remote-session-client: Register a remote_session_client. Two paths: manual (caller supplies client_id and optionally client_secret) or auto-DCR (auto_register=true triggers an outbound RFC 7591 registration against the issuer's registration_endpoint).`) fmt.Fprintln(os.Stderr, ` clone-client-fromoauth-proxy-provider: Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.`) fmt.Fprintln(os.Stderr, ` update-remote-session-client: Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.`) fmt.Fprintln(os.Stderr, ` list-remote-session-clients: List remote_session_clients in the caller's project.`) @@ -8782,7 +8390,7 @@ func remoteSessionClientsCreateRemoteSessionClientUsage() { // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.`) + fmt.Fprintln(os.Stderr, `Register a remote_session_client. Two paths: manual (caller supplies client_id and optionally client_secret) or auto-DCR (auto_register=true triggers an outbound RFC 7591 registration against the issuer's registration_endpoint).`) // Flags list fmt.Fprintln(os.Stderr, ` -body JSON: `) @@ -8792,7 +8400,7 @@ func remoteSessionClientsCreateRemoteSessionClientUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients create-remote-session-client --body '{\n \"audience\": \"aaa\",\n \"client_id\": \"abc123\",\n \"client_secret\": \"abc123\",\n \"remote_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"scope\": [\n \"aaa\",\n \"aaa\",\n \"aaa\"\n ],\n \"token_endpoint_auth_method\": \"client_secret_post\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients create-remote-session-client --body '{\n \"auto_register\": false,\n \"client_id\": \"abc123\",\n \"client_secret\": \"abc123\",\n \"remote_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func remoteSessionClientsCloneClientFromOAuthProxyProviderUsage() { @@ -8816,7 +8424,7 @@ func remoteSessionClientsCloneClientFromOAuthProxyProviderUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients clone-client-fromoauth-proxy-provider --body '{\n \"audience\": \"aaa\",\n \"oauth_proxy_provider_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"remote_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"scope\": [\n \"aaa\",\n \"aaa\",\n \"aaa\"\n ],\n \"token_endpoint_auth_method\": \"client_secret_post\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients clone-client-fromoauth-proxy-provider --body '{\n \"oauth_proxy_provider_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"remote_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func remoteSessionClientsUpdateRemoteSessionClientUsage() { @@ -8840,7 +8448,7 @@ func remoteSessionClientsUpdateRemoteSessionClientUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients update-remote-session-client --body '{\n \"audience\": \"aaa\",\n \"client_secret\": \"abc123\",\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"scope\": [\n \"aaa\",\n \"aaa\",\n \"aaa\"\n ],\n \"token_endpoint_auth_method\": \"client_secret_post\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients update-remote-session-client --body '{\n \"client_secret\": \"abc123\",\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func remoteSessionClientsListRemoteSessionClientsUsage() { @@ -8929,6 +8537,7 @@ func remoteSessionIssuersUsage() { fmt.Fprintln(os.Stderr, "COMMAND:") fmt.Fprintln(os.Stderr, ` discover-remote-session-issuer: Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.`) fmt.Fprintln(os.Stderr, ` create-remote-session-issuer: Create a new remote_session_issuer.`) + fmt.Fprintln(os.Stderr, ` register-remote-session-issuer: Perform an RFC 7591 Dynamic Client Registration call against an existing issuer's registration_endpoint and persist the issued credentials as a new remote_session_client. The issuer must already have a registration_endpoint configured.`) fmt.Fprintln(os.Stderr, ` update-remote-session-issuer: Update fields on an existing remote_session_issuer.`) fmt.Fprintln(os.Stderr, ` list-remote-session-issuers: List remote_session_issuers in the caller's project.`) fmt.Fprintln(os.Stderr, ` get-remote-session-issuer: Get a remote_session_issuer by id or by slug. Provide exactly one.`) @@ -8985,6 +8594,30 @@ func remoteSessionIssuersCreateRemoteSessionIssuerUsage() { fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-issuers create-remote-session-issuer --body '{\n \"authorization_endpoint\": \"abc123\",\n \"grant_types_supported\": [\n \"abc123\"\n ],\n \"issuer\": \"abc123\",\n \"jwks_uri\": \"abc123\",\n \"oidc\": false,\n \"passthrough\": false,\n \"registration_endpoint\": \"abc123\",\n \"response_types_supported\": [\n \"abc123\"\n ],\n \"scopes_supported\": [\n \"abc123\"\n ],\n \"slug\": \"abc123\",\n \"token_endpoint\": \"abc123\",\n \"token_endpoint_auth_methods_supported\": [\n \"abc123\"\n ]\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } +func remoteSessionIssuersRegisterRemoteSessionIssuerUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] remote-session-issuers register-remote-session-issuer", os.Args[0]) + fmt.Fprint(os.Stderr, " -body JSON") + fmt.Fprint(os.Stderr, " -session-token STRING") + fmt.Fprint(os.Stderr, " -apikey-token STRING") + fmt.Fprint(os.Stderr, " -project-slug-input STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Perform an RFC 7591 Dynamic Client Registration call against an existing issuer's registration_endpoint and persist the issued credentials as a new remote_session_client. The issuer must already have a registration_endpoint configured.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -body JSON: `) + fmt.Fprintln(os.Stderr, ` -session-token STRING: `) + fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) + fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-issuers register-remote-session-issuer --body '{\n \"client_name\": \"abc123\",\n \"redirect_uris\": [\n \"abc123\"\n ],\n \"remote_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") +} + func remoteSessionIssuersUpdateRemoteSessionIssuerUsage() { // Header with flags fmt.Fprintf(os.Stderr, "%s [flags] remote-session-issuers update-remote-session-issuer", os.Args[0]) @@ -9200,11 +8833,8 @@ func riskUsage() { fmt.Fprintln(os.Stderr, ` update-risk-policy: Update a risk analysis policy.`) fmt.Fprintln(os.Stderr, ` delete-risk-policy: Delete a risk analysis policy.`) fmt.Fprintln(os.Stderr, ` list-risk-results: List risk analysis results for the current project.`) + fmt.Fprintln(os.Stderr, ` list-risk-results-for-agent: List risk analysis results with the `+"`"+`match`+"`"+` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `+"`"+`match`+"`"+` value — a non-sensitive server URL or command identifier — is passed through verbatim.`) fmt.Fprintln(os.Stderr, ` list-risk-results-by-chat: List risk results grouped by chat session for the current project.`) - fmt.Fprintln(os.Stderr, ` get-risk-overview: Get risk overview metrics and trend data for the current project.`) - fmt.Fprintln(os.Stderr, ` list-risk-categories: Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.`) - fmt.Fprintln(os.Stderr, ` get-risk-user-breakdown: Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview.`) - fmt.Fprintln(os.Stderr, ` get-risk-rule-breakdown: Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview.`) fmt.Fprintln(os.Stderr, ` get-risk-policy-status: Get the analysis status of a risk policy including progress and workflow state.`) fmt.Fprintln(os.Stderr, ` list-shadow-mcp-approvals: List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.`) fmt.Fprintln(os.Stderr, ` approve-shadow-mcp: Approve a shadow-MCP server so the named policy stops blocking calls to it. `+"`"+`match`+"`"+` is the same opaque server identifier surfaced in `+"`"+`RiskResult.match`+"`"+` — typically a server URL, stdio command, or `+"`"+`mcp____`+"`"+` prefix.`) @@ -9359,11 +8989,6 @@ func riskListRiskResultsUsage() { fmt.Fprintf(os.Stderr, "%s [flags] risk list-risk-results", os.Args[0]) fmt.Fprint(os.Stderr, " -policy-id STRING") fmt.Fprint(os.Stderr, " -chat-id STRING") - fmt.Fprint(os.Stderr, " -category STRING") - fmt.Fprint(os.Stderr, " -rule-id STRING") - fmt.Fprint(os.Stderr, " -unique-match BOOL") - fmt.Fprint(os.Stderr, " -from STRING") - fmt.Fprint(os.Stderr, " -to STRING") fmt.Fprint(os.Stderr, " -cursor STRING") fmt.Fprint(os.Stderr, " -limit INT") fmt.Fprint(os.Stderr, " -apikey-token STRING") @@ -9378,11 +9003,6 @@ func riskListRiskResultsUsage() { // Flags list fmt.Fprintln(os.Stderr, ` -policy-id STRING: `) fmt.Fprintln(os.Stderr, ` -chat-id STRING: `) - fmt.Fprintln(os.Stderr, ` -category STRING: `) - fmt.Fprintln(os.Stderr, ` -rule-id STRING: `) - fmt.Fprintln(os.Stderr, ` -unique-match BOOL: `) - fmt.Fprintln(os.Stderr, ` -from STRING: `) - fmt.Fprintln(os.Stderr, ` -to STRING: `) fmt.Fprintln(os.Stderr, ` -cursor STRING: `) fmt.Fprintln(os.Stderr, ` -limit INT: `) fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) @@ -9391,12 +9011,14 @@ func riskListRiskResultsUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-results --policy-id \"550e8400-e29b-41d4-a716-446655440000\" --chat-id \"550e8400-e29b-41d4-a716-446655440000\" --category \"abc123\" --rule-id \"abc123\" --unique-match false --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --cursor \"abc123\" --limit 2 --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-results --policy-id \"550e8400-e29b-41d4-a716-446655440000\" --chat-id \"550e8400-e29b-41d4-a716-446655440000\" --cursor \"abc123\" --limit 2 --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") } -func riskListRiskResultsByChatUsage() { +func riskListRiskResultsForAgentUsage() { // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] risk list-risk-results-by-chat", os.Args[0]) + fmt.Fprintf(os.Stderr, "%s [flags] risk list-risk-results-for-agent", os.Args[0]) + fmt.Fprint(os.Stderr, " -policy-id STRING") + fmt.Fprint(os.Stderr, " -chat-id STRING") fmt.Fprint(os.Stderr, " -cursor STRING") fmt.Fprint(os.Stderr, " -limit INT") fmt.Fprint(os.Stderr, " -apikey-token STRING") @@ -9406,9 +9028,11 @@ func riskListRiskResultsByChatUsage() { // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `List risk results grouped by chat session for the current project.`) + fmt.Fprintln(os.Stderr, `List risk analysis results with the `+"`"+`match`+"`"+` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `+"`"+`match`+"`"+` value — a non-sensitive server URL or command identifier — is passed through verbatim.`) // Flags list + fmt.Fprintln(os.Stderr, ` -policy-id STRING: `) + fmt.Fprintln(os.Stderr, ` -chat-id STRING: `) fmt.Fprintln(os.Stderr, ` -cursor STRING: `) fmt.Fprintln(os.Stderr, ` -limit INT: `) fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) @@ -9417,91 +9041,14 @@ func riskListRiskResultsByChatUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-results-by-chat --cursor \"abc123\" --limit 2 --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") -} - -func riskGetRiskOverviewUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] risk get-risk-overview", os.Args[0]) - fmt.Fprint(os.Stderr, " -from STRING") - fmt.Fprint(os.Stderr, " -to STRING") - fmt.Fprint(os.Stderr, " -apikey-token STRING") - fmt.Fprint(os.Stderr, " -session-token STRING") - fmt.Fprint(os.Stderr, " -project-slug-input STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Get risk overview metrics and trend data for the current project.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -from STRING: `) - fmt.Fprintln(os.Stderr, ` -to STRING: `) - fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) - fmt.Fprintln(os.Stderr, ` -session-token STRING: `) - fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk get-risk-overview --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-results-for-agent --policy-id \"550e8400-e29b-41d4-a716-446655440000\" --chat-id \"550e8400-e29b-41d4-a716-446655440000\" --cursor \"abc123\" --limit 2 --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") } -func riskListRiskCategoriesUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] risk list-risk-categories", os.Args[0]) - fmt.Fprint(os.Stderr, " -apikey-token STRING") - fmt.Fprint(os.Stderr, " -session-token STRING") - fmt.Fprint(os.Stderr, " -project-slug-input STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) - fmt.Fprintln(os.Stderr, ` -session-token STRING: `) - fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-categories --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") -} - -func riskGetRiskUserBreakdownUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] risk get-risk-user-breakdown", os.Args[0]) - fmt.Fprint(os.Stderr, " -external-user-id STRING") - fmt.Fprint(os.Stderr, " -from STRING") - fmt.Fprint(os.Stderr, " -to STRING") - fmt.Fprint(os.Stderr, " -apikey-token STRING") - fmt.Fprint(os.Stderr, " -session-token STRING") - fmt.Fprint(os.Stderr, " -project-slug-input STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -external-user-id STRING: `) - fmt.Fprintln(os.Stderr, ` -from STRING: `) - fmt.Fprintln(os.Stderr, ` -to STRING: `) - fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) - fmt.Fprintln(os.Stderr, ` -session-token STRING: `) - fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk get-risk-user-breakdown --external-user-id \"abc123\" --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") -} - -func riskGetRiskRuleBreakdownUsage() { +func riskListRiskResultsByChatUsage() { // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] risk get-risk-rule-breakdown", os.Args[0]) - fmt.Fprint(os.Stderr, " -category STRING") - fmt.Fprint(os.Stderr, " -from STRING") - fmt.Fprint(os.Stderr, " -to STRING") + fmt.Fprintf(os.Stderr, "%s [flags] risk list-risk-results-by-chat", os.Args[0]) + fmt.Fprint(os.Stderr, " -cursor STRING") + fmt.Fprint(os.Stderr, " -limit INT") fmt.Fprint(os.Stderr, " -apikey-token STRING") fmt.Fprint(os.Stderr, " -session-token STRING") fmt.Fprint(os.Stderr, " -project-slug-input STRING") @@ -9509,19 +9056,18 @@ func riskGetRiskRuleBreakdownUsage() { // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview.`) + fmt.Fprintln(os.Stderr, `List risk results grouped by chat session for the current project.`) // Flags list - fmt.Fprintln(os.Stderr, ` -category STRING: `) - fmt.Fprintln(os.Stderr, ` -from STRING: `) - fmt.Fprintln(os.Stderr, ` -to STRING: `) + fmt.Fprintln(os.Stderr, ` -cursor STRING: `) + fmt.Fprintln(os.Stderr, ` -limit INT: `) fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) fmt.Fprintln(os.Stderr, ` -session-token STRING: `) fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk get-risk-rule-breakdown --category \"abc123\" --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-results-by-chat --cursor \"abc123\" --limit 2 --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") } func riskGetRiskPolicyStatusUsage() { diff --git a/server/gen/http/openapi3.json b/server/gen/http/openapi3.json index d3c5165e89..f966f9d80b 100644 --- a/server/gen/http/openapi3.json +++ b/server/gen/http/openapi3.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/auth.callback":{"get":{"tags":["admin"],"summary":"callback admin","operationId":"admin#callback","parameters":[{"name":"code","in":"query","description":"The authorization code returned by the provider on success","allowEmptyValue":true,"schema":{"type":"string","description":"The authorization code returned by the provider on success"}},{"name":"state","in":"query","description":"The state parameter returned, which should match the one generated in the login step","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"The state parameter returned, which should match the one generated in the login step"}},{"name":"error","in":"query","description":"OAuth error code returned by the provider (e.g. login_required for prompt=none failures)","allowEmptyValue":true,"schema":{"type":"string","description":"OAuth error code returned by the provider (e.g. login_required for prompt=none failures)"}},{"name":"error_description","in":"query","description":"Human-readable OAuth error description","allowEmptyValue":true,"schema":{"type":"string","description":"Human-readable OAuth error description"}},{"name":"gram_admin_login_state","in":"cookie","description":"The state cookie value for CSRF sanity checking against the state parameter","allowEmptyValue":true,"schema":{"type":"string","description":"The state cookie value for CSRF sanity checking against the state parameter"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect the client to after processing the callback","schema":{"type":"string","description":"The URL to redirect the client to after processing the callback"}},"Set-Cookie":{"description":"Admin session cookie","schema":{"type":"string","description":"Admin session cookie"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/auth.login":{"get":{"tags":["admin"],"summary":"login admin","operationId":"admin#login","parameters":[{"name":"return_to","in":"query","description":"Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted."}},{"name":"prompt","in":"query","description":"Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication."}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect the user to for Google authentication","schema":{"type":"string","description":"The URL to redirect the user to for Google authentication"}},"Set-Cookie":{"description":"CSRF state cookie for sanity-checking the callback","schema":{"type":"string","description":"CSRF state cookie for sanity-checking the callback"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/auth.logout":{"post":{"tags":["admin"],"summary":"logout admin","operationId":"admin#logout","parameters":[{"name":"gram_admin","in":"cookie","description":"The session cookie value to clear for logging out","allowEmptyValue":true,"schema":{"type":"string","description":"The session cookie value to clear for logging out"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/organization.get":{"get":{"tags":["admin"],"summary":"getOrganization admin","description":"Returns full admin details for a single organization by id or slug.","operationId":"adminGetOrganization","parameters":[{"name":"id_or_slug","in":"query","description":"Organization ID or slug.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID or slug."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOrganization"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.members":{"get":{"tags":["admin"],"summary":"listOrganizationMembers admin","description":"Lists members of an organization (admin view, no auth scoping).","operationId":"adminListOrganizationMembers","parameters":[{"name":"organization_id","in":"query","description":"Organization ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationMembersResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.projects":{"get":{"tags":["admin"],"summary":"listOrganizationProjects admin","description":"Lists projects belonging to an organization (admin view, no auth scoping).","operationId":"adminListOrganizationProjects","parameters":[{"name":"organization_id","in":"query","description":"Organization ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationProjectsResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.update":{"post":{"tags":["admin"],"summary":"updateOrganization admin","description":"Updates admin-managed fields on an organization. At least one of account_type or whitelisted must be supplied.","operationId":"adminUpdateOrganization","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOrganization"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organizations.list":{"get":{"description":"Lists organizations for admin operations with optional search and filters.","operationId":"adminListOrganizations","parameters":[{"allowEmptyValue":true,"description":"Search term applied to name and slug (case-insensitive substring).","in":"query","name":"q","schema":{"description":"Search term applied to name and slug (case-insensitive substring).","type":"string"}},{"allowEmptyValue":true,"description":"Filter by gram_account_type (e.g. free, pro, enterprise).","in":"query","name":"account_type","schema":{"description":"Filter by gram_account_type (e.g. free, pro, enterprise).","type":"string"}},{"allowEmptyValue":true,"description":"Include organizations with disabled_at set. Defaults to false.","in":"query","name":"include_disabled","schema":{"description":"Include organizations with disabled_at set. Defaults to false.","type":"boolean"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"admin_auth_header_Authorization":[]}],"summary":"listOrganizations admin","tags":["admin"],"x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"}}},"/admin/project.get":{"get":{"tags":["admin"],"summary":"getProject admin","description":"Returns full admin details for a project by id or slug, including aggregated counts of child resources.","operationId":"adminGetProject","parameters":[{"name":"id_or_slug","in":"query","description":"Project ID or slug.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Project ID or slug."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProjectDetail"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRoles":{"put":{"description":"Update a team member's role assignments.","operationId":"updateMemberRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRolesForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRoles access","tags":["access"],"x-speakeasy-name-override":"updateMemberRoles","x-speakeasy-react-hook":{"name":"UpdateMemberRoles"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter to chats produced by this assistant","in":"query","name":"assistant_id","schema":{"description":"Filter to chats produced by this assistant","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter by whether chat has risk findings: 'true', 'false', or empty for no filter.","in":"query","name":"has_risk","schema":{"description":"Filter by whether chat has risk findings: 'true', 'false', or empty for no filter.","enum":["","true","false"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.listMcpEndpoints":{"get":{"description":"List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through.","operationId":"listCustomDomainMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCustomDomainMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listMcpEndpoints domains","tags":["domains"],"x-speakeasy-name-override":"listMcpEndpoints","x-speakeasy-react-hook":{"name":"CustomDomainMcpEndpoints"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.checkSlugAvailability":{"get":{"description":"Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.","operationId":"checkMcpEndpointSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","in":"query","name":"custom_domain_id","schema":{"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMcpEndpointSlugAvailability mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"checkSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMcpEndpointSlugAvailability"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.categories":{"get":{"description":"Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.","operationId":"listRiskCategories","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCategoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskCategories risk","tags":["risk"],"x-speakeasy-group":"risk.categories","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskCategories"}}},"/rpc/risk.overview.get":{"get":{"description":"Get risk overview metrics and trend data for the current project.","operationId":"getRiskOverview","parameters":[{"allowEmptyValue":true,"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","in":"query","name":"from","schema":{"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the overview window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the overview window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskOverview risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskOverview"}}},"/rpc/risk.overview.rules":{"get":{"description":"Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview.","operationId":"getRiskRuleBreakdown","parameters":[{"allowEmptyValue":true,"description":"Required category key to break down by rule_id (e.g. secrets, pii).","in":"query","name":"category","required":true,"schema":{"description":"Required category key to break down by rule_id (e.g. secrets, pii).","type":"string"}},{"allowEmptyValue":true,"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","in":"query","name":"from","schema":{"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskRuleBreakdownResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskRuleBreakdown risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"rules","x-speakeasy-react-hook":{"name":"RiskRuleBreakdown"}}},"/rpc/risk.overview.userBreakdown":{"get":{"description":"Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview.","operationId":"getRiskUserBreakdown","parameters":[{"allowEmptyValue":true,"description":"External user identifier to scope the breakdown to.","in":"query","name":"external_user_id","required":true,"schema":{"description":"External user identifier to scope the breakdown to.","type":"string"}},{"allowEmptyValue":true,"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","in":"query","name":"from","schema":{"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskUserBreakdownResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskUserBreakdown risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"userBreakdown","x-speakeasy-react-hook":{"name":"RiskUserBreakdown"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional rule category key to filter by (e.g. secrets, pii, financial).","in":"query","name":"category","schema":{"description":"Optional rule category key to filter by (e.g. secrets, pii, financial).","type":"string"}},{"allowEmptyValue":true,"description":"Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).","in":"query","name":"rule_id","schema":{"description":"Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).","type":"string"}},{"allowEmptyValue":true,"description":"If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.","in":"query","name":"unique_match","schema":{"description":"If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.","type":"boolean"}},{"allowEmptyValue":true,"description":"Filter results to messages created at or after this timestamp (ISO 8601).","in":"query","name":"from","schema":{"description":"Filter results to messages created at or after this timestamp (ISO 8601).","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter results to messages created strictly before this timestamp (ISO 8601).","in":"query","name":"to","schema":{"description":"Filter results to messages created strictly before this timestamp (ISO 8601).","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_ids":{"type":"array","items":{"type":"string"},"description":"All role IDs assigned to this member."}},"required":["id","name","email","role_ids","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AdminListOrganizationMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AdminOrganizationMember"},"description":"The members of the organization."}},"required":["members"]},"AdminListOrganizationProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/AdminProject"},"description":"The projects belonging to the organization."}},"required":["projects"]},"AdminListOrganizationsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/AdminOrganization"},"description":"The page of organizations."}},"required":["organizations"]},"AdminOrganization":{"type":"object","properties":{"account_type":{"type":"string","description":"Gram account type (e.g. free, pro, enterprise)."},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"disabled_at":{"type":"string","description":"The time at which the organization was disabled, if any.","format":"date-time"},"free_trial_ends_at":{"type":"string","description":"The time at which the free trial ends.","format":"date-time"},"free_trial_started_at":{"type":"string","description":"The time at which the free trial started.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"member_count":{"type":"integer","description":"Number of active members in the organization.","format":"int64"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted for full access."},"workos_id":{"type":"string","description":"WorkOS organization ID, if linked."}},"description":"Organization details surfaced to admin operators.","required":["id","name","slug","account_type","whitelisted","member_count","created_at","updated_at"]},"AdminOrganizationMember":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"User display name."},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"User ID."},"last_login":{"type":"string","description":"The time the user last logged in, if any.","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"description":"Organization member surfaced to admin operators.","required":["id","email","display_name","created_at","updated_at"]},"AdminProject":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"description":"Project summary surfaced to admin operators.","required":["id","name","slug","created_at","updated_at"]},"AdminProjectDetail":{"type":"object","properties":{"api_key_count":{"type":"integer","description":"Number of active API keys in the project.","format":"int64"},"assistant_count":{"type":"integer","description":"Number of active assistants in the project.","format":"int64"},"created_at":{"type":"string","format":"date-time"},"deployment_count":{"type":"integer","description":"Total number of deployments in the project.","format":"int64"},"environment_count":{"type":"integer","description":"Number of active environments in the project.","format":"int64"},"functions_runner_version":{"type":"string","description":"Functions runner version pin, if set."},"http_tool_count":{"type":"integer","description":"Number of active HTTP tool definitions in the project.","format":"int64"},"id":{"type":"string","description":"Project ID."},"logo_asset_id":{"type":"string","description":"Project logo asset ID, if set."},"name":{"type":"string","description":"Project name."},"organization_id":{"type":"string","description":"Owning organization ID."},"slug":{"type":"string","description":"Project slug."},"toolset_count":{"type":"integer","description":"Number of active toolsets in the project.","format":"int64"},"updated_at":{"type":"string","format":"date-time"}},"description":"Full project detail surfaced to admin operators, including aggregated counts of child resources.","required":["id","name","slug","organization_id","toolset_count","deployment_count","http_tool_count","environment_count","api_key_count","assistant_count","created_at","updated_at"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"decision":{"type":"string","description":"Top-level block decision for UserPromptSubmit / PostToolUse / Stop / SubagentStop. Use 'block' to halt processing."},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"reason":{"type":"string","description":"Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude (PostToolUse/Stop)."},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange for the cloned client.","pattern":"^[!-~]+$","maxLength":512},"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for the cloned client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the cloned client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. When set, MCP clients are required to authenticate against this issuer before connecting.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["name","visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange.","pattern":"^[!-~]+$","maxLength":512},"client_id":{"type":"string","description":"client_id supplied by the caller."},"client_secret":{"type":"string","description":"client_secret supplied by the caller. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for this client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Caller supplies client_id (and optional client_secret) obtained out-of-band from the upstream issuer.","required":["remote_session_issuer_id","user_session_issuer_id","client_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"CustomDomainMcpEndpoint":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the parent MCP server","format":"uuid"},"mcp_server_name":{"type":"string","description":"The display name of the parent MCP server. May be empty if the parent has no configured name."},"mcp_server_slug":{"type":"string","description":"The url-friendly slug of the parent MCP server. May be empty if the parent has no configured slug."},"project_id":{"type":"string","description":"The ID of the project the endpoint belongs to","format":"uuid"},"project_name":{"type":"string","description":"The display name of the project the endpoint belongs to"},"project_slug":{"type":"string","description":"The url-friendly slug of the project the endpoint belongs to"},"slug":{"type":"string","description":"The endpoint slug"}},"description":"An MCP endpoint registered under a custom domain, with its parent MCP server and project denormalised for display in the dashboard's delete-impact preview.","required":["id","slug","project_id","project_name","project_slug","mcp_server_id"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListCustomDomainMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/CustomDomainMcpEndpoint"}}},"description":"Result of listing the MCP endpoints registered under an organization's custom domain.","required":["mcp_endpoints"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"slug":{"type":"string","description":"A URL-safe, project-unique slug derived server-side from the name and ID"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication for this server, if any.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"audience":{"type":"string","description":"Upstream OAuth audience sent on the authorize redirect and token exchange. Null omits the audience parameter."},"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string"},"description":"Explicit upstream OAuth scopes the dance requests for this client. Null falls back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Null resolves to client_secret_basic at runtime.","enum":["client_secret_basic","client_secret_post"]},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskCategoriesResult":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskCategoryDefinition"},"description":"Categories in classification-priority order. The last entry is the 'custom' fallback for findings that match none of the others."}},"description":"Canonical risk category definitions used to classify findings, in classification-priority order. Consumers should iterate in order and pick the first match.","required":["categories"]},"RiskCategoryDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Plain-English description of what this category covers."},"icon":{"type":"string","description":"Lucide icon name suggested for this category."},"key":{"type":"string","description":"Canonical category key (e.g. 'secrets', 'pii', 'shadow_mcp')."},"label":{"type":"string","description":"Human-readable category label for UI rendering."},"rule_id_prefix":{"type":"string","description":"When non-empty, findings whose rule_id starts with this prefix belong to this category. The catch-all for a family (e.g. 'pii.')."},"rule_ids":{"type":"array","items":{"type":"string"},"description":"When non-empty, findings whose rule_id is in this exact list belong to this category. Checked before rule_id_prefix."},"source":{"type":"string","description":"When non-empty, findings whose source equals this value belong to this category."}},"description":"One canonical risk category and how findings are classified into it.","required":["key","label","description","icon","source","rule_ids","rule_id_prefix"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskOverviewCategory":{"type":"object","properties":{"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category.","format":"int64"}},"required":["category","findings"]},"RiskOverviewResult":{"type":"object","properties":{"active_policies":{"type":"integer","description":"Enabled risk policies for the current project.","format":"int64"},"findings":{"type":"integer","description":"Policy findings in the window.","format":"int64"},"flagged_sessions":{"type":"integer","description":"Chat sessions with at least one finding in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the overview window.","format":"date-time"},"messages_scanned":{"type":"integer","description":"Messages analyzed by risk policies in the window.","format":"int64"},"time_series_findings":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewTimeSeriesFinding"},"description":"Time-series finding counts by category in the window."},"to":{"type":"string","description":"Exclusive end of the overview window.","format":"date-time"},"top_categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Top policy categories by finding count."},"top_rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Top rule_ids by finding count."},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewUser"},"description":"Top users by finding count."}},"required":["from","to","messages_scanned","findings","flagged_sessions","active_policies","top_categories","top_users","top_rules","time_series_findings"]},"RiskOverviewTimeSeriesFinding":{"type":"object","properties":{"bucket_start":{"type":"string","description":"Time bucket start.","format":"date-time"},"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category and time bucket.","format":"int64"}},"required":["bucket_start","category","findings"]},"RiskOverviewUser":{"type":"object","properties":{"email":{"type":"string","description":"User email, or Unknown user when unavailable."},"external_user_id":{"type":"string","description":"External user identifier as recorded on chats, when known. Empty when the finding cannot be attributed to an external user."},"findings":{"type":"integer","description":"Finding count for this user.","format":"int64"}},"required":["email","external_user_id","findings"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskRuleBreakdownEntry":{"type":"object","properties":{"findings":{"type":"integer","description":"Finding count for this rule within the window.","format":"int64"},"rule_id":{"type":"string","description":"Rule identifier (e.g. 'secret.aws-access-key'). Empty when the finding has no rule_id (treat as 'unspecified')."},"source":{"type":"string","description":"Source bucket the rule belongs to (gitleaks, presidio, etc.) for label/icon resolution on the dashboard."}},"required":["rule_id","source","findings"]},"RiskRuleBreakdownResult":{"type":"object","properties":{"category":{"type":"string","description":"Category the breakdown is scoped to."},"from":{"type":"string","description":"Inclusive start of the window used.","format":"date-time"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Rules in this category, ordered by finding count descending."},"to":{"type":"string","description":"Exclusive end of the window used.","format":"date-time"},"total":{"type":"integer","description":"Total findings across all rules in this category and window.","format":"int64"}},"required":["from","to","category","rules","total"]},"RiskUserBreakdownResult":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Category breakdown for this user, ordered by finding count descending."},"external_user_id":{"type":"string","description":"External user the breakdown is scoped to."},"findings":{"type":"integer","description":"Total findings for this user in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the window used.","format":"date-time"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Rule_id breakdown for this user, ordered by finding count descending."},"to":{"type":"string","description":"Exclusive end of the window used.","format":"date-time"}},"required":["from","to","external_user_id","findings","categories","rules"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"RoleSummary":{"type":"object","properties":{"cost_per_user":{"type":"number","description":"Average cost per user (total_cost / user_count)","format":"double"},"role_id":{"type":"string","description":"Role identifier extracted from role URN"},"role_name":{"type":"string","description":"Human-readable role name"},"total_chats":{"type":"integer","description":"Total chat sessions across all users","format":"int64"},"total_cost":{"type":"number","description":"Total cost across all users with this role","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens across all users","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens across all users","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens across all users","format":"int64"},"user_count":{"type":"integer","description":"Number of users with this role","format":"int64"}},"description":"Aggregated usage summary for a role","required":["role_id","role_name","user_count","total_cost","cost_per_user","total_input_tokens","total_output_tokens","total_tokens","total_chats"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"group_by":{"type":"string","description":"Grouping dimension for results","default":"employee","enum":["employee","role"]},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleSummary"},"description":"List of role usage summaries (populated when group_by=role)"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries (populated when group_by=employee)"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server. Omit to leave the existing name unchanged; if provided, must be non-empty."},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. Omit to disable issuer-gated OAuth.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided. Omit name to leave the existing display name unchanged; the slug is recomputed server-side from the resulting name.","required":["id","visibility"]},"UpdateMemberRolesForm":{"type":"object","properties":{"role_ids":{"type":"array","items":{"type":"string"},"description":"The role IDs to assign. Replaces all existing role assignments."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_ids"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdateOrganizationRequestBody":{"type":"object","properties":{"account_type":{"type":"string","description":"New gram_account_type (e.g. free, pro, enterprise)."},"id":{"type":"string","description":"Organization ID."},"whitelisted":{"type":"boolean","description":"New whitelisted flag."}},"required":["id"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Replace the upstream OAuth audience sent for this client. Omit to leave unchanged.","pattern":"^[!-~]+$","maxLength":512},"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Replace the explicit upstream OAuth scopes for this client. Omit to leave unchanged."},"token_endpoint_auth_method":{"type":"string","description":"Change how the client authenticates at the issuer's token endpoint.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"admin_auth_header_Authorization":{"type":"apiKey","description":"Admin session auth for admin endpoints. Cookie-only credential; session is validated against Google on every request.","name":"Authorization","in":"header"},"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operations supporting admin tasks, protected by Google workspace auth."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/diagnostics.poke":{"get":{"tags":["admin"],"summary":"poke admin","operationId":"admin#poke","responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PokeResponseBody"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRole":{"put":{"description":"Change a team member's role assignment.","operationId":"updateMemberRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRole access","tags":["access"],"x-speakeasy-name-override":"updateMemberRole","x-speakeasy-react-hook":{"name":"UpdateMemberRole"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client. Two paths: manual (caller supplies client_id and optionally client_secret) or auto-DCR (auto_register=true triggers an outbound RFC 7591 registration against the issuer's registration_endpoint).","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.register":{"post":{"description":"Perform an RFC 7591 Dynamic Client Registration call against an existing issuer's registration_endpoint and persist the issued credentials as a new remote_session_client. The issuer must already have a registration_endpoint configured.","operationId":"registerRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"registerRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"RegisterRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_id":{"type":"string","description":"Currently assigned role ID."}},"required":["id","name","email","role_id","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"auto_register":{"type":"boolean","description":"When true, Gram fires an outbound RFC 7591 DCR call against the issuer's registration_endpoint and ignores client_id and client_secret."},"client_id":{"type":"string","description":"Manual-path client_id supplied by the caller."},"client_secret":{"type":"string","description":"Manual-path client secret. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Either supply client_id (manual path) or set auto_register=true (DCR path).","required":["remote_session_issuer_id","user_session_issuer_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"PokeResponseBody":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRemoteSessionIssuerForm":{"type":"object","properties":{"client_name":{"type":"string","description":"Optional client_name to send in the RFC 7591 registration request."},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Optional redirect_uris to send in the RFC 7591 registration request."},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer to register against. Must have a registration_endpoint configured.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the issued client is paired with.","format":"uuid"}},"description":"Form for registering a new remote_session_client against an existing remote_session_issuer via RFC 7591 Dynamic Client Registration.","required":["remote_session_issuer_id","user_session_issuer_id"]},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["id","visibility"]},"UpdateMemberRoleForm":{"type":"object","properties":{"role_id":{"type":"string","description":"The new role ID to assign."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_id"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operational endpoints for administrative tasks."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file diff --git a/server/gen/http/openapi3.yaml b/server/gen/http/openapi3.yaml index c568e8eb38..20fd458cf9 100644 --- a/server/gen/http/openapi3.yaml +++ b/server/gen/http/openapi3.yaml @@ -6,300 +6,19 @@ info: servers: - url: https://app.getgram.ai paths: - /admin/auth.callback: + /admin/diagnostics.poke: get: tags: - admin - summary: callback admin - operationId: admin#callback - parameters: - - name: code - in: query - description: The authorization code returned by the provider on success - allowEmptyValue: true - schema: - type: string - description: The authorization code returned by the provider on success - - name: state - in: query - description: The state parameter returned, which should match the one generated in the login step - allowEmptyValue: true - required: true - schema: - type: string - description: The state parameter returned, which should match the one generated in the login step - - name: error - in: query - description: OAuth error code returned by the provider (e.g. login_required for prompt=none failures) - allowEmptyValue: true - schema: - type: string - description: OAuth error code returned by the provider (e.g. login_required for prompt=none failures) - - name: error_description - in: query - description: Human-readable OAuth error description - allowEmptyValue: true - schema: - type: string - description: Human-readable OAuth error description - - name: gram_admin_login_state - in: cookie - description: The state cookie value for CSRF sanity checking against the state parameter - allowEmptyValue: true - schema: - type: string - description: The state cookie value for CSRF sanity checking against the state parameter - responses: - "307": - description: Temporary Redirect response. - headers: - Location: - description: The URL to redirect the client to after processing the callback - schema: - type: string - description: The URL to redirect the client to after processing the callback - Set-Cookie: - description: Admin session cookie - schema: - type: string - description: Admin session cookie - "400": - description: 'bad_request: request is invalid' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "401": - description: 'unauthorized: unauthorized access' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "403": - description: 'forbidden: permission denied' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "404": - description: 'not_found: resource not found' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "409": - description: 'conflict: resource already exists' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "415": - description: 'unsupported_media: unsupported media type' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "422": - description: 'invalid: request contains one or more invalidation fields' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "500": - description: 'unexpected: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "502": - description: 'gateway_error: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - /admin/auth.login: - get: - tags: - - admin - summary: login admin - operationId: admin#login - parameters: - - name: return_to - in: query - description: Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted. - allowEmptyValue: true - schema: - type: string - description: Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted. - - name: prompt - in: query - description: Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication. - allowEmptyValue: true - schema: - type: string - description: Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication. - responses: - "307": - description: Temporary Redirect response. - headers: - Location: - description: The URL to redirect the user to for Google authentication - schema: - type: string - description: The URL to redirect the user to for Google authentication - Set-Cookie: - description: CSRF state cookie for sanity-checking the callback - schema: - type: string - description: CSRF state cookie for sanity-checking the callback - "400": - description: 'bad_request: request is invalid' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "401": - description: 'unauthorized: unauthorized access' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "403": - description: 'forbidden: permission denied' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "404": - description: 'not_found: resource not found' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "409": - description: 'conflict: resource already exists' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "415": - description: 'unsupported_media: unsupported media type' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "422": - description: 'invalid: request contains one or more invalidation fields' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "500": - description: 'unexpected: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "502": - description: 'gateway_error: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - /admin/auth.logout: - post: - tags: - - admin - summary: logout admin - operationId: admin#logout - parameters: - - name: gram_admin - in: cookie - description: The session cookie value to clear for logging out - allowEmptyValue: true - schema: - type: string - description: The session cookie value to clear for logging out - responses: - "204": - description: No Content response. - "400": - description: 'bad_request: request is invalid' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "401": - description: 'unauthorized: unauthorized access' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "403": - description: 'forbidden: permission denied' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "404": - description: 'not_found: resource not found' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "409": - description: 'conflict: resource already exists' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "415": - description: 'unsupported_media: unsupported media type' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "422": - description: 'invalid: request contains one or more invalidation fields' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "500": - description: 'unexpected: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "502": - description: 'gateway_error: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - /admin/organization.get: - get: - tags: - - admin - summary: getOrganization admin - description: Returns full admin details for a single organization by id or slug. - operationId: adminGetOrganization - parameters: - - name: id_or_slug - in: query - description: Organization ID or slug. - allowEmptyValue: true - required: true - schema: - type: string - description: Organization ID or slug. + summary: poke admin + operationId: admin#poke responses: "200": description: OK response. content: application/json: schema: - $ref: '#/components/schemas/AdminOrganization' + $ref: '#/components/schemas/PokeResponseBody' "400": description: 'bad_request: request is invalid' content: @@ -354,436 +73,6 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' - security: - - admin_auth_header_Authorization: [] - /admin/organization.members: - get: - tags: - - admin - summary: listOrganizationMembers admin - description: Lists members of an organization (admin view, no auth scoping). - operationId: adminListOrganizationMembers - parameters: - - name: organization_id - in: query - description: Organization ID. - allowEmptyValue: true - required: true - schema: - type: string - description: Organization ID. - responses: - "200": - description: OK response. - content: - application/json: - schema: - $ref: '#/components/schemas/AdminListOrganizationMembersResult' - "400": - description: 'bad_request: request is invalid' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "401": - description: 'unauthorized: unauthorized access' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "403": - description: 'forbidden: permission denied' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "404": - description: 'not_found: resource not found' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "409": - description: 'conflict: resource already exists' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "415": - description: 'unsupported_media: unsupported media type' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "422": - description: 'invalid: request contains one or more invalidation fields' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "500": - description: 'unexpected: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "502": - description: 'gateway_error: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - security: - - admin_auth_header_Authorization: [] - /admin/organization.projects: - get: - tags: - - admin - summary: listOrganizationProjects admin - description: Lists projects belonging to an organization (admin view, no auth scoping). - operationId: adminListOrganizationProjects - parameters: - - name: organization_id - in: query - description: Organization ID. - allowEmptyValue: true - required: true - schema: - type: string - description: Organization ID. - responses: - "200": - description: OK response. - content: - application/json: - schema: - $ref: '#/components/schemas/AdminListOrganizationProjectsResult' - "400": - description: 'bad_request: request is invalid' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "401": - description: 'unauthorized: unauthorized access' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "403": - description: 'forbidden: permission denied' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "404": - description: 'not_found: resource not found' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "409": - description: 'conflict: resource already exists' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "415": - description: 'unsupported_media: unsupported media type' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "422": - description: 'invalid: request contains one or more invalidation fields' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "500": - description: 'unexpected: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "502": - description: 'gateway_error: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - security: - - admin_auth_header_Authorization: [] - /admin/organization.update: - post: - tags: - - admin - summary: updateOrganization admin - description: Updates admin-managed fields on an organization. At least one of account_type or whitelisted must be supplied. - operationId: adminUpdateOrganization - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateOrganizationRequestBody' - responses: - "200": - description: OK response. - content: - application/json: - schema: - $ref: '#/components/schemas/AdminOrganization' - "400": - description: 'bad_request: request is invalid' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "401": - description: 'unauthorized: unauthorized access' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "403": - description: 'forbidden: permission denied' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "404": - description: 'not_found: resource not found' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "409": - description: 'conflict: resource already exists' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "415": - description: 'unsupported_media: unsupported media type' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "422": - description: 'invalid: request contains one or more invalidation fields' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "500": - description: 'unexpected: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "502": - description: 'gateway_error: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - security: - - admin_auth_header_Authorization: [] - /admin/organizations.list: - get: - description: Lists organizations for admin operations with optional search and filters. - operationId: adminListOrganizations - parameters: - - allowEmptyValue: true - description: Search term applied to name and slug (case-insensitive substring). - in: query - name: q - schema: - description: Search term applied to name and slug (case-insensitive substring). - type: string - - allowEmptyValue: true - description: Filter by gram_account_type (e.g. free, pro, enterprise). - in: query - name: account_type - schema: - description: Filter by gram_account_type (e.g. free, pro, enterprise). - type: string - - allowEmptyValue: true - description: Include organizations with disabled_at set. Defaults to false. - in: query - name: include_disabled - schema: - description: Include organizations with disabled_at set. Defaults to false. - type: boolean - - allowEmptyValue: true - description: 'Pagination cursor: id of the last item from the previous page.' - in: query - name: cursor - schema: - description: 'Pagination cursor: id of the last item from the previous page.' - type: string - - allowEmptyValue: true - description: Page size (default 50, max 100). - in: query - name: limit - schema: - description: Page size (default 50, max 100). - format: int64 - type: integer - responses: - "200": - content: - application/json: - schema: - $ref: '#/components/schemas/AdminListOrganizationsResult' - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - admin_auth_header_Authorization: [] - summary: listOrganizations admin - tags: - - admin - x-speakeasy-pagination: - inputs: - - in: parameters - name: cursor - type: cursor - outputs: - nextCursor: $.next_cursor - type: cursor - /admin/project.get: - get: - tags: - - admin - summary: getProject admin - description: Returns full admin details for a project by id or slug, including aggregated counts of child resources. - operationId: adminGetProject - parameters: - - name: id_or_slug - in: query - description: Project ID or slug. - allowEmptyValue: true - required: true - schema: - type: string - description: Project ID or slug. - responses: - "200": - description: OK response. - content: - application/json: - schema: - $ref: '#/components/schemas/AdminProjectDetail' - "400": - description: 'bad_request: request is invalid' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "401": - description: 'unauthorized: unauthorized access' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "403": - description: 'forbidden: permission denied' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "404": - description: 'not_found: resource not found' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "409": - description: 'conflict: resource already exists' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "415": - description: 'unsupported_media: unsupported media type' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "422": - description: 'invalid: request contains one or more invalidation fields' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "500": - description: 'unexpected: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - "502": - description: 'gateway_error: an unexpected error occurred' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - security: - - admin_auth_header_Authorization: [] /rpc/access.createRole: post: description: Create a new custom role. @@ -2060,10 +1349,10 @@ paths: x-speakeasy-name-override: resolveChallenge x-speakeasy-react-hook: name: ResolveChallenge - /rpc/access.updateMemberRoles: + /rpc/access.updateMemberRole: put: - description: Update a team member's role assignments. - operationId: updateMemberRoles + description: Change a team member's role assignment. + operationId: updateMemberRole parameters: - allowEmptyValue: true description: API Key header @@ -2083,7 +1372,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateMemberRolesForm' + $ref: '#/components/schemas/UpdateMemberRoleForm' required: true responses: "200": @@ -2149,12 +1438,12 @@ paths: security: - apikey_header_Gram-Key: [] - session_header_Gram-Session: [] - summary: updateMemberRoles access + summary: updateMemberRole access tags: - access - x-speakeasy-name-override: updateMemberRoles + x-speakeasy-name-override: updateMemberRole x-speakeasy-react-hook: - name: UpdateMemberRoles + name: UpdateMemberRole /rpc/access.updateRole: put: description: Update an existing custom role. @@ -5509,14 +4798,6 @@ paths: schema: description: Filter by external user ID type: string - - allowEmptyValue: true - description: Filter to chats produced by this assistant - in: query - name: assistant_id - schema: - description: Filter to chats produced by this assistant - format: uuid - type: string - allowEmptyValue: true description: Filter by resolution status in: query @@ -5524,17 +4805,6 @@ paths: schema: description: Filter by resolution status type: string - - allowEmptyValue: true - description: 'Filter by whether chat has risk findings: ''true'', ''false'', or empty for no filter.' - in: query - name: has_risk - schema: - description: 'Filter by whether chat has risk findings: ''true'', ''false'', or empty for no filter.' - enum: - - "" - - "true" - - "false" - type: string - allowEmptyValue: true description: Filter chats created after this timestamp (ISO 8601) in: query @@ -7156,122 +6426,17 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: getDeployment deployments - tags: - - deployments - x-speakeasy-name-override: getById - x-speakeasy-react-hook: - name: Deployment - /rpc/deployments.latest: - get: - description: Get the latest deployment for a project. - operationId: getLatestDeployment - parameters: - - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - - allowEmptyValue: true - description: Session header - in: header - name: Gram-Session - schema: - description: Session header - type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - responses: - "200": - content: - application/json: - schema: - $ref: '#/components/schemas/GetLatestDeploymentResult' - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - summary: getLatestDeployment deployments + summary: getDeployment deployments tags: - deployments - x-speakeasy-name-override: latest + x-speakeasy-name-override: getById x-speakeasy-react-hook: - name: LatestDeployment - /rpc/deployments.list: + name: Deployment + /rpc/deployments.latest: get: - description: List all deployments in descending order of creation. - operationId: listDeployments + description: Get the latest deployment for a project. + operationId: getLatestDeployment parameters: - - allowEmptyValue: true - description: The cursor to fetch results from - in: query - name: cursor - schema: - description: The cursor to fetch results from - type: string - allowEmptyValue: true description: API Key header in: header @@ -7298,7 +6463,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListDeploymentResult' + $ref: '#/components/schemas/GetLatestDeploymentResult' description: OK response. "400": content: @@ -7359,25 +6524,17 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: listDeployments deployments + summary: getLatestDeployment deployments tags: - deployments - x-speakeasy-name-override: list + x-speakeasy-name-override: latest x-speakeasy-react-hook: - name: ListDeployments - /rpc/deployments.logs: + name: LatestDeployment + /rpc/deployments.list: get: - description: Get logs for a deployment. - operationId: getDeploymentLogs + description: List all deployments in descending order of creation. + operationId: listDeployments parameters: - - allowEmptyValue: true - description: The ID of the deployment - in: query - name: deployment_id - required: true - schema: - description: The ID of the deployment - type: string - allowEmptyValue: true description: The cursor to fetch results from in: query @@ -7411,7 +6568,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetDeploymentLogsResult' + $ref: '#/components/schemas/ListDeploymentResult' description: OK response. "400": content: @@ -7472,17 +6629,32 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: getDeploymentLogs deployments + summary: listDeployments deployments tags: - deployments - x-speakeasy-name-override: logs + x-speakeasy-name-override: list x-speakeasy-react-hook: - name: DeploymentLogs - /rpc/deployments.redeploy: - post: - description: Redeploys an existing deployment. - operationId: redeployDeployment + name: ListDeployments + /rpc/deployments.logs: + get: + description: Get logs for a deployment. + operationId: getDeploymentLogs parameters: + - allowEmptyValue: true + description: The ID of the deployment + in: query + name: deployment_id + required: true + schema: + description: The ID of the deployment + type: string + - allowEmptyValue: true + description: The cursor to fetch results from + in: query + name: cursor + schema: + description: The cursor to fetch results from + type: string - allowEmptyValue: true description: API Key header in: header @@ -7504,18 +6676,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RedeployRequestBody' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/RedeployResult' + $ref: '#/components/schemas/GetDeploymentLogsResult' description: OK response. "400": content: @@ -7576,17 +6742,24 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: redeploy deployments + summary: getDeploymentLogs deployments tags: - deployments - x-speakeasy-name-override: redeployDeployment + x-speakeasy-name-override: logs x-speakeasy-react-hook: - name: RedeployDeployment - /rpc/domain.delete: - delete: - description: Delete a custom domain - operationId: deleteDomain + name: DeploymentLogs + /rpc/deployments.redeploy: + post: + description: Redeploys an existing deployment. + operationId: redeployDeployment parameters: + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string - allowEmptyValue: true description: Session header in: header @@ -7594,8 +6767,25 @@ paths: schema: description: Session header type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RedeployRequestBody' + required: true responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/RedeployResult' description: OK response. "400": content: @@ -7652,17 +6842,20 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - session_header_Gram-Session: [] - summary: deleteDomain domains + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + summary: redeploy deployments tags: - - domains - x-speakeasy-name-override: deleteDomain + - deployments + x-speakeasy-name-override: redeployDeployment x-speakeasy-react-hook: - name: deleteDomain - /rpc/domain.get: - get: - description: Get the custom domain for an organization - operationId: getDomain + name: RedeployDeployment + /rpc/domain.delete: + delete: + description: Delete a custom domain + operationId: deleteDomain parameters: - allowEmptyValue: true description: Session header @@ -7673,10 +6866,6 @@ paths: type: string responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/CustomDomain' description: OK response. "400": content: @@ -7734,16 +6923,16 @@ paths: description: 'gateway_error: an unexpected error occurred' security: - session_header_Gram-Session: [] - summary: getDomain domains + summary: deleteDomain domains tags: - domains - x-speakeasy-name-override: getDomain + x-speakeasy-name-override: deleteDomain x-speakeasy-react-hook: - name: getDomain - /rpc/domain.listMcpEndpoints: + name: deleteDomain + /rpc/domain.get: get: - description: List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through. - operationId: listCustomDomainMcpEndpoints + description: Get the custom domain for an organization + operationId: getDomain parameters: - allowEmptyValue: true description: Session header @@ -7757,7 +6946,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListCustomDomainMcpEndpointsResult' + $ref: '#/components/schemas/CustomDomain' description: OK response. "400": content: @@ -7815,12 +7004,12 @@ paths: description: 'gateway_error: an unexpected error occurred' security: - session_header_Gram-Session: [] - summary: listMcpEndpoints domains + summary: getDomain domains tags: - domains - x-speakeasy-name-override: listMcpEndpoints + x-speakeasy-name-override: getDomain x-speakeasy-react-hook: - name: CustomDomainMcpEndpoints + name: getDomain /rpc/domain.register: post: description: Create a custom domain for an organization @@ -18409,136 +17598,40 @@ paths: security: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - summary: revokeRemoteSession remoteSessions - tags: - - remoteSessions - x-speakeasy-name-override: revoke - x-speakeasy-react-hook: - name: RevokeRemoteSession - /rpc/resources.list: - get: - description: List all resources for a project - operationId: listResources - parameters: - - allowEmptyValue: true - description: The cursor to fetch results from - in: query - name: cursor - schema: - description: The cursor to fetch results from - type: string - - allowEmptyValue: true - description: The number of resources to return per page - in: query - name: limit - schema: - description: The number of resources to return per page - format: int32 - type: integer - - allowEmptyValue: true - description: The deployment ID. If unset, latest deployment will be used. - in: query - name: deployment_id - schema: - description: The deployment ID. If unset, latest deployment will be used. - type: string - - allowEmptyValue: true - description: Session header - in: header - name: Gram-Session - schema: - description: Session header - type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - responses: - "200": - content: - application/json: - schema: - $ref: '#/components/schemas/ListResourcesResult' - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - summary: listResources resources + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] + summary: revokeRemoteSession remoteSessions tags: - - resources - x-speakeasy-name-override: list + - remoteSessions + x-speakeasy-name-override: revoke x-speakeasy-react-hook: - name: ListResources - /rpc/risk.approvals.create: - post: - description: Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp____` prefix. - operationId: approveShadowMCP + name: RevokeRemoteSession + /rpc/resources.list: + get: + description: List all resources for a project + operationId: listResources parameters: - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key + description: The cursor to fetch results from + in: query + name: cursor schema: - description: API Key header + description: The cursor to fetch results from + type: string + - allowEmptyValue: true + description: The number of resources to return per page + in: query + name: limit + schema: + description: The number of resources to return per page + format: int32 + type: integer + - allowEmptyValue: true + description: The deployment ID. If unset, latest deployment will be used. + in: query + name: deployment_id + schema: + description: The deployment ID. If unset, latest deployment will be used. type: string - allowEmptyValue: true description: Session header @@ -18554,18 +17647,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ApproveShadowMCPRequestBody' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ShadowMCPApproval' + $ref: '#/components/schemas/ListResourcesResult' description: OK response. "400": content: @@ -18622,40 +17709,19 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: approveShadowMCP risk + summary: listResources resources tags: - - risk - x-speakeasy-group: risk.approvals - x-speakeasy-name-override: create + - resources + x-speakeasy-name-override: list x-speakeasy-react-hook: - name: RiskApproveShadowMCP - type: mutation - /rpc/risk.approvals.delete: - delete: - description: Remove a previously-approved shadow-MCP server for a policy. - operationId: revokeShadowMCPApproval + name: ListResources + /rpc/risk.approvals.create: + post: + description: Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp____` prefix. + operationId: approveShadowMCP parameters: - - allowEmptyValue: true - description: The risk policy ID. - in: query - name: policy_id - required: true - schema: - description: The risk policy ID. - format: uuid - type: string - - allowEmptyValue: true - description: The MCP server identifier to revoke — exactly the value used to approve. - in: query - name: match - required: true - schema: - description: The MCP server identifier to revoke — exactly the value used to approve. - type: string - allowEmptyValue: true description: API Key header in: header @@ -18677,8 +17743,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApproveShadowMCPRequestBody' + required: true responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ShadowMCPApproval' description: OK response. "400": content: @@ -18739,15 +17815,18 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: revokeShadowMCPApproval risk + summary: approveShadowMCP risk tags: - risk x-speakeasy-group: risk.approvals - x-speakeasy-name-override: delete - /rpc/risk.approvals.list: - get: - description: List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates. - operationId: listShadowMCPApprovals + x-speakeasy-name-override: create + x-speakeasy-react-hook: + name: RiskApproveShadowMCP + type: mutation + /rpc/risk.approvals.delete: + delete: + description: Remove a previously-approved shadow-MCP server for a policy. + operationId: revokeShadowMCPApproval parameters: - allowEmptyValue: true description: The risk policy ID. @@ -18758,6 +17837,14 @@ paths: description: The risk policy ID. format: uuid type: string + - allowEmptyValue: true + description: The MCP server identifier to revoke — exactly the value used to approve. + in: query + name: match + required: true + schema: + description: The MCP server identifier to revoke — exactly the value used to approve. + type: string - allowEmptyValue: true description: API Key header in: header @@ -18781,10 +17868,6 @@ paths: type: string responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/ListShadowMCPApprovalsResult' description: OK response. "400": content: @@ -18845,117 +17928,25 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: listShadowMCPApprovals risk + summary: revokeShadowMCPApproval risk tags: - risk x-speakeasy-group: risk.approvals - x-speakeasy-name-override: list - x-speakeasy-react-hook: - name: RiskListShadowMCPApprovals - /rpc/risk.capabilities.get: + x-speakeasy-name-override: delete + /rpc/risk.approvals.list: get: - description: Get server-side risk analysis capabilities for the current project. - operationId: getRiskCapabilities + description: List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates. + operationId: listShadowMCPApprovals parameters: - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - - allowEmptyValue: true - description: Session header - in: header - name: Gram-Session + description: The risk policy ID. + in: query + name: policy_id + required: true schema: - description: Session header + description: The risk policy ID. + format: uuid type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - responses: - "200": - content: - application/json: - schema: - $ref: '#/components/schemas/RiskCapabilitiesResult' - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - summary: getRiskCapabilities risk - tags: - - risk - x-speakeasy-group: risk.capabilities - x-speakeasy-name-override: get - x-speakeasy-react-hook: - name: RiskCapabilities - /rpc/risk.categories: - get: - description: 'Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.' - operationId: listRiskCategories - parameters: - allowEmptyValue: true description: API Key header in: header @@ -18982,7 +17973,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskCategoriesResult' + $ref: '#/components/schemas/ListShadowMCPApprovalsResult' description: OK response. "400": content: @@ -19043,34 +18034,18 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: listRiskCategories risk + summary: listShadowMCPApprovals risk tags: - risk - x-speakeasy-group: risk.categories + x-speakeasy-group: risk.approvals x-speakeasy-name-override: list x-speakeasy-react-hook: - name: RiskCategories - /rpc/risk.overview.get: + name: RiskListShadowMCPApprovals + /rpc/risk.capabilities.get: get: - description: Get risk overview metrics and trend data for the current project. - operationId: getRiskOverview + description: Get server-side risk analysis capabilities for the current project. + operationId: getRiskCapabilities parameters: - - allowEmptyValue: true - description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. - in: query - name: from - schema: - description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. - format: date-time - type: string - - allowEmptyValue: true - description: Exclusive end of the overview window. Defaults to now. - in: query - name: to - schema: - description: Exclusive end of the overview window. Defaults to now. - format: date-time - type: string - allowEmptyValue: true description: API Key header in: header @@ -19097,7 +18072,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskOverviewResult' + $ref: '#/components/schemas/RiskCapabilitiesResult' description: OK response. "400": content: @@ -19158,163 +18133,32 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: getRiskOverview risk + summary: getRiskCapabilities risk tags: - risk - x-speakeasy-group: risk.overview + x-speakeasy-group: risk.capabilities x-speakeasy-name-override: get x-speakeasy-react-hook: - name: RiskOverview - /rpc/risk.overview.rules: - get: - description: Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview. - operationId: getRiskRuleBreakdown - parameters: - - allowEmptyValue: true - description: Required category key to break down by rule_id (e.g. secrets, pii). - in: query - name: category - required: true - schema: - description: Required category key to break down by rule_id (e.g. secrets, pii). - type: string - - allowEmptyValue: true - description: Inclusive start of the window. Defaults to the same 7-day window as the overview. - in: query - name: from - schema: - description: Inclusive start of the window. Defaults to the same 7-day window as the overview. - format: date-time - type: string - - allowEmptyValue: true - description: Exclusive end of the window. Defaults to now. - in: query - name: to - schema: - description: Exclusive end of the window. Defaults to now. - format: date-time - type: string - - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - - allowEmptyValue: true - description: Session header - in: header - name: Gram-Session - schema: - description: Session header - type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - responses: - "200": - content: - application/json: - schema: - $ref: '#/components/schemas/RiskRuleBreakdownResult' - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - summary: getRiskRuleBreakdown risk - tags: - - risk - x-speakeasy-group: risk.overview - x-speakeasy-name-override: rules - x-speakeasy-react-hook: - name: RiskRuleBreakdown - /rpc/risk.overview.userBreakdown: + name: RiskCapabilities + /rpc/risk.overview.get: get: - description: Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview. - operationId: getRiskUserBreakdown + description: Get risk overview metrics and trend data for the current project. + operationId: getRiskOverview parameters: - allowEmptyValue: true - description: External user identifier to scope the breakdown to. - in: query - name: external_user_id - required: true - schema: - description: External user identifier to scope the breakdown to. - type: string - - allowEmptyValue: true - description: Inclusive start of the window. Defaults to the same 7-day window as the overview. + description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. in: query name: from schema: - description: Inclusive start of the window. Defaults to the same 7-day window as the overview. + description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. format: date-time type: string - allowEmptyValue: true - description: Exclusive end of the window. Defaults to now. + description: Exclusive end of the overview window. Defaults to now. in: query name: to schema: - description: Exclusive end of the window. Defaults to now. + description: Exclusive end of the overview window. Defaults to now. format: date-time type: string - allowEmptyValue: true @@ -19343,7 +18187,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskUserBreakdownResult' + $ref: '#/components/schemas/RiskOverviewResult' description: OK response. "400": content: @@ -19404,13 +18248,13 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: getRiskUserBreakdown risk + summary: getRiskOverview risk tags: - risk x-speakeasy-group: risk.overview - x-speakeasy-name-override: userBreakdown + x-speakeasy-name-override: get x-speakeasy-react-hook: - name: RiskUserBreakdown + name: RiskOverview /rpc/risk.policies.create: post: description: Create a new risk analysis policy for the current project. @@ -20270,41 +19114,136 @@ paths: format: uuid type: string - allowEmptyValue: true - description: Optional rule category key to filter by (e.g. secrets, pii, financial). + description: Cursor to fetch the next page of results. in: query - name: category + name: cursor schema: - description: Optional rule category key to filter by (e.g. secrets, pii, financial). + description: Cursor to fetch the next page of results. type: string - allowEmptyValue: true - description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + description: Maximum number of results to return per page. in: query - name: rule_id + name: limit + schema: + description: Maximum number of results to return per page. + format: int64 + maximum: 200 + minimum: 1 + type: integer + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key schema: - description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + description: API Key header type: string - allowEmptyValue: true - description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. - in: query - name: unique_match + description: Session header + in: header + name: Gram-Session schema: - description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. - type: boolean + description: Session header + type: string - allowEmptyValue: true - description: Filter results to messages created at or after this timestamp (ISO 8601). + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ListRiskResultsResult' + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + summary: listRiskResults risk + tags: + - risk + x-speakeasy-group: risk.results + x-speakeasy-name-override: list + x-speakeasy-react-hook: + name: RiskListResults + /rpc/risk.results.listForAgent: + get: + description: List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim. + operationId: listRiskResultsForAgent + parameters: + - allowEmptyValue: true + description: Optional policy ID to filter by. in: query - name: from + name: policy_id schema: - description: Filter results to messages created at or after this timestamp (ISO 8601). - format: date-time + description: Optional policy ID to filter by. + format: uuid type: string - allowEmptyValue: true - description: Filter results to messages created strictly before this timestamp (ISO 8601). + description: Optional chat ID to filter by. in: query - name: to + name: chat_id schema: - description: Filter results to messages created strictly before this timestamp (ISO 8601). - format: date-time + description: Optional chat ID to filter by. + format: uuid type: string - allowEmptyValue: true description: Cursor to fetch the next page of results. @@ -20349,7 +19288,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListRiskResultsResult' + $ref: '#/components/schemas/ListRiskResultsForAgentResult' description: OK response. "400": content: @@ -20410,13 +19349,13 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: listRiskResults risk + summary: listRiskResultsForAgent risk tags: - risk x-speakeasy-group: risk.results - x-speakeasy-name-override: list + x-speakeasy-name-override: listForAgent x-speakeasy-react-hook: - name: RiskListResults + name: RiskListResultsForAgent /rpc/slack-apps.configure: post: description: Store Slack credentials (client ID, client secret, signing secret) for an app. @@ -27482,16 +26421,14 @@ components: photo_url: type: string description: Avatar URL. - role_ids: - type: array - items: - type: string - description: All role IDs assigned to this member. + role_id: + type: string + description: Currently assigned role ID. required: - id - name - email - - role_ids + - role_id - joined_at AddDeploymentPackageForm: type: object @@ -27696,215 +26633,6 @@ components: - plugin_id - toolset_id - display_name - AdminListOrganizationMembersResult: - type: object - properties: - members: - type: array - items: - $ref: '#/components/schemas/AdminOrganizationMember' - description: The members of the organization. - required: - - members - AdminListOrganizationProjectsResult: - type: object - properties: - projects: - type: array - items: - $ref: '#/components/schemas/AdminProject' - description: The projects belonging to the organization. - required: - - projects - AdminListOrganizationsResult: - type: object - properties: - next_cursor: - type: string - description: Cursor for the next page; empty when exhausted. - organizations: - type: array - items: - $ref: '#/components/schemas/AdminOrganization' - description: The page of organizations. - required: - - organizations - AdminOrganization: - type: object - properties: - account_type: - type: string - description: Gram account type (e.g. free, pro, enterprise). - created_at: - type: string - description: The creation date of the organization. - format: date-time - disabled_at: - type: string - description: The time at which the organization was disabled, if any. - format: date-time - free_trial_ends_at: - type: string - description: The time at which the free trial ends. - format: date-time - free_trial_started_at: - type: string - description: The time at which the free trial started. - format: date-time - id: - type: string - description: The ID of the organization - member_count: - type: integer - description: Number of active members in the organization. - format: int64 - name: - type: string - description: The name of the organization - slug: - type: string - description: The slug of the organization - updated_at: - type: string - description: The last update date of the organization. - format: date-time - whitelisted: - type: boolean - description: Whether the organization is whitelisted for full access. - workos_id: - type: string - description: WorkOS organization ID, if linked. - description: Organization details surfaced to admin operators. - required: - - id - - name - - slug - - account_type - - whitelisted - - member_count - - created_at - - updated_at - AdminOrganizationMember: - type: object - properties: - created_at: - type: string - format: date-time - display_name: - type: string - description: User display name. - email: - type: string - description: User email address. - id: - type: string - description: User ID. - last_login: - type: string - description: The time the user last logged in, if any. - format: date-time - updated_at: - type: string - format: date-time - description: Organization member surfaced to admin operators. - required: - - id - - email - - display_name - - created_at - - updated_at - AdminProject: - type: object - properties: - created_at: - type: string - description: The creation date of the project. - format: date-time - id: - type: string - description: The ID of the project - name: - type: string - description: The name of the project - slug: - type: string - description: The slug of the project - updated_at: - type: string - description: The last update date of the project. - format: date-time - description: Project summary surfaced to admin operators. - required: - - id - - name - - slug - - created_at - - updated_at - AdminProjectDetail: - type: object - properties: - api_key_count: - type: integer - description: Number of active API keys in the project. - format: int64 - assistant_count: - type: integer - description: Number of active assistants in the project. - format: int64 - created_at: - type: string - format: date-time - deployment_count: - type: integer - description: Total number of deployments in the project. - format: int64 - environment_count: - type: integer - description: Number of active environments in the project. - format: int64 - functions_runner_version: - type: string - description: Functions runner version pin, if set. - http_tool_count: - type: integer - description: Number of active HTTP tool definitions in the project. - format: int64 - id: - type: string - description: Project ID. - logo_asset_id: - type: string - description: Project logo asset ID, if set. - name: - type: string - description: Project name. - organization_id: - type: string - description: Owning organization ID. - slug: - type: string - description: Project slug. - toolset_count: - type: integer - description: Number of active toolsets in the project. - format: int64 - updated_at: - type: string - format: date-time - description: Full project detail surfaced to admin operators, including aggregated counts of child resources. - required: - - id - - name - - slug - - organization_id - - toolset_count - - deployment_count - - http_tool_count - - environment_count - - api_key_count - - assistant_count - - created_at - - updated_at AllowedOrigin: type: object properties: @@ -28660,10 +27388,6 @@ components: type: integer description: The number of messages in the chat format: int64 - risk_findings_count: - type: integer - description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. - format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -28765,10 +27489,6 @@ components: type: integer description: The number of messages in the chat format: int64 - risk_findings_count: - type: integer - description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. - format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -28831,10 +27551,6 @@ components: items: $ref: '#/components/schemas/ChatResolution' description: List of resolutions for this chat - risk_findings_count: - type: integer - description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. - format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -30229,44 +28945,6 @@ components: - created_at - updated_at - is_updating - CustomDomainMcpEndpoint: - type: object - properties: - id: - type: string - description: The ID of the MCP endpoint - format: uuid - mcp_server_id: - type: string - description: The ID of the parent MCP server - format: uuid - mcp_server_name: - type: string - description: The display name of the parent MCP server. May be empty if the parent has no configured name. - mcp_server_slug: - type: string - description: The url-friendly slug of the parent MCP server. May be empty if the parent has no configured slug. - project_id: - type: string - description: The ID of the project the endpoint belongs to - format: uuid - project_name: - type: string - description: The display name of the project the endpoint belongs to - project_slug: - type: string - description: The url-friendly slug of the project the endpoint belongs to - slug: - type: string - description: The endpoint slug - description: An MCP endpoint registered under a custom domain, with its parent MCP server and project denormalised for display in the dashboard's delete-impact preview. - required: - - id - - slug - - project_id - - project_name - - project_slug - - mcp_server_id DeleteGlobalToolVariationForm: type: object properties: @@ -32524,16 +31202,6 @@ components: required: - chats - total - ListCustomDomainMcpEndpointsResult: - type: object - properties: - mcp_endpoints: - type: array - items: - $ref: '#/components/schemas/CustomDomainMcpEndpoint' - description: Result of listing the MCP endpoints registered under an organization's custom domain. - required: - - mcp_endpoints ListDeploymentForm: type: object properties: @@ -32882,6 +31550,24 @@ components: description: Cursor for the next page of results. required: - chats + ListRiskResultsForAgentResult: + type: object + properties: + next_cursor: + type: string + description: Cursor for the next page of results. + results: + type: array + items: + $ref: '#/components/schemas/RiskResultRedacted' + description: The list of risk results with match content redacted to opaque fingerprints. + total_count: + type: integer + description: Total number of findings across all enabled policies. + format: int64 + required: + - results + - total_count ListRiskResultsResult: type: object properties: @@ -34554,6 +33240,13 @@ components: - policy - sort_order - created_at + PokeResponseBody: + type: object + properties: + ok: + type: boolean + required: + - ok Project: type: object properties: @@ -35480,52 +34173,6 @@ components: description: Whether the prompt-injection ML classifier is configured on this server. required: - pi_classifier_enabled - RiskCategoriesResult: - type: object - properties: - categories: - type: array - items: - $ref: '#/components/schemas/RiskCategoryDefinition' - description: Categories in classification-priority order. The last entry is the 'custom' fallback for findings that match none of the others. - description: Canonical risk category definitions used to classify findings, in classification-priority order. Consumers should iterate in order and pick the first match. - required: - - categories - RiskCategoryDefinition: - type: object - properties: - description: - type: string - description: Plain-English description of what this category covers. - icon: - type: string - description: Lucide icon name suggested for this category. - key: - type: string - description: Canonical category key (e.g. 'secrets', 'pii', 'shadow_mcp'). - label: - type: string - description: Human-readable category label for UI rendering. - rule_id_prefix: - type: string - description: When non-empty, findings whose rule_id starts with this prefix belong to this category. The catch-all for a family (e.g. 'pii.'). - rule_ids: - type: array - items: - type: string - description: When non-empty, findings whose rule_id is in this exact list belong to this category. Checked before rule_id_prefix. - source: - type: string - description: When non-empty, findings whose source equals this value belong to this category. - description: One canonical risk category and how findings are classified into it. - required: - - key - - label - - description - - icon - - source - - rule_ids - - rule_id_prefix RiskChatSummary: type: object properties: @@ -35601,11 +34248,6 @@ components: items: $ref: '#/components/schemas/RiskOverviewCategory' description: Top policy categories by finding count. - top_rules: - type: array - items: - $ref: '#/components/schemas/RiskRuleBreakdownEntry' - description: Top rule_ids by finding count. top_users: type: array items: @@ -35620,7 +34262,6 @@ components: - active_policies - top_categories - top_users - - top_rules - time_series_findings RiskOverviewTimeSeriesFinding: type: object @@ -35646,16 +34287,12 @@ components: email: type: string description: User email, or Unknown user when unavailable. - external_user_id: - type: string - description: External user identifier as recorded on chats, when known. Empty when the finding cannot be attributed to an external user. findings: type: integer description: Finding count for this user. format: int64 required: - email - - external_user_id - findings RiskPolicy: type: object @@ -35846,87 +34483,72 @@ components: - chat_message_id - source - created_at - RiskRuleBreakdownEntry: + RiskResultRedacted: type: object properties: - findings: - type: integer - description: Finding count for this rule within the window. - format: int64 - rule_id: + chat_id: type: string - description: Rule identifier (e.g. 'secret.aws-access-key'). Empty when the finding has no rule_id (treat as 'unspecified'). - source: + description: The chat session containing the message. + format: uuid + chat_message_id: type: string - description: Source bucket the rule belongs to (gitleaks, presidio, etc.) for label/icon resolution on the dashboard. - required: - - rule_id - - source - - findings - RiskRuleBreakdownResult: - type: object - properties: - category: + description: The chat message that was scanned. + format: uuid + chat_title: type: string - description: Category the breakdown is scoped to. - from: + description: Title of the chat session. + confidence: + type: number + description: Confidence score for this finding. + format: double + created_at: type: string - description: Inclusive start of the window used. + description: When this result was created. format: date-time - rules: - type: array - items: - $ref: '#/components/schemas/RiskRuleBreakdownEntry' - description: Rules in this category, ordered by finding count descending. - to: + description: type: string - description: Exclusive end of the window used. - format: date-time - total: - type: integer - description: Total findings across all rules in this category and window. - format: int64 - required: - - from - - to - - category - - rules - - total - RiskUserBreakdownResult: - type: object - properties: - categories: - type: array - items: - $ref: '#/components/schemas/RiskOverviewCategory' - description: Category breakdown for this user, ordered by finding count descending. - external_user_id: + description: Human-readable description of the finding. + id: type: string - description: External user the breakdown is scoped to. - findings: + description: The result ID. + format: uuid + match_redacted: + type: string + description: Opaque fingerprint of the original match in the form `` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim. + policy_id: + type: string + description: The risk policy ID. + format: uuid + policy_version: type: integer - description: Total findings for this user in the window. + description: Policy version when this result was produced. format: int64 - from: + position_known: + type: boolean + description: Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks. + rule_id: type: string - description: Inclusive start of the window used. - format: date-time - rules: + description: The matched rule identifier. + source: + type: string + description: Detection source (e.g. gitleaks, presidio, shadow_mcp). + tags: type: array items: - $ref: '#/components/schemas/RiskRuleBreakdownEntry' - description: Rule_id breakdown for this user, ordered by finding count descending. - to: + type: string + description: Tags from the detection rule. + user_id: type: string - description: Exclusive end of the window used. - format: date-time + description: The user who owns the chat session. required: - - from - - to - - external_user_id - - findings - - categories - - rules + - id + - policy_id + - policy_version + - chat_message_id + - source + - created_at + - match_redacted + - position_known Role: type: object properties: @@ -38113,20 +36735,18 @@ components: required: - id - visibility - UpdateMemberRolesForm: + UpdateMemberRoleForm: type: object properties: - role_ids: - type: array - items: - type: string - description: The role IDs to assign. Replaces all existing role assignments. + role_id: + type: string + description: The new role ID to assign. user_id: type: string description: The user ID to update. required: - user_id - - role_ids + - role_id UpdateOAuthProxyServerForm: type: object properties: @@ -38149,20 +36769,6 @@ components: $ref: '#/components/schemas/OAuthProxyServerUpdateForm' required: - oauth_proxy_server - UpdateOrganizationRequestBody: - type: object - properties: - account_type: - type: string - description: New gram_account_type (e.g. free, pro, enterprise). - id: - type: string - description: Organization ID. - whitelisted: - type: boolean - description: New whitelisted flag. - required: - - id UpdatePackageForm: type: object properties: @@ -39261,11 +37867,6 @@ components: - verified - message securitySchemes: - admin_auth_header_Authorization: - type: apiKey - description: Admin session auth for admin endpoints. Cookie-only credential; session is validated against Google on every request. - name: Authorization - in: header apikey_header_Authorization: type: apiKey description: key based auth. @@ -39298,7 +37899,7 @@ tags: - name: access description: Manage roles, team member access control, and authorization challenge events. - name: admin - description: Operations supporting admin tasks, protected by Google workspace auth. + description: Operational endpoints for administrative tasks. - name: assets description: Manages assets used by Gram projects. - name: assistantMemories diff --git a/server/gen/http/risk/client/cli.go b/server/gen/http/risk/client/cli.go index 65a3c407aa..46fc3cfc4a 100644 --- a/server/gen/http/risk/client/cli.go +++ b/server/gen/http/risk/client/cli.go @@ -419,6 +419,87 @@ func BuildListRiskResultsPayload(riskListRiskResultsPolicyID string, riskListRis return v, nil } +// BuildListRiskResultsForAgentPayload builds the payload for the risk +// listRiskResultsForAgent endpoint from CLI flags. +func BuildListRiskResultsForAgentPayload(riskListRiskResultsForAgentPolicyID string, riskListRiskResultsForAgentChatID string, riskListRiskResultsForAgentCursor string, riskListRiskResultsForAgentLimit string, riskListRiskResultsForAgentApikeyToken string, riskListRiskResultsForAgentSessionToken string, riskListRiskResultsForAgentProjectSlugInput string) (*risk.ListRiskResultsForAgentPayload, error) { + var err error + var policyID *string + { + if riskListRiskResultsForAgentPolicyID != "" { + policyID = &riskListRiskResultsForAgentPolicyID + err = goa.MergeErrors(err, goa.ValidateFormat("policy_id", *policyID, goa.FormatUUID)) + if err != nil { + return nil, err + } + } + } + var chatID *string + { + if riskListRiskResultsForAgentChatID != "" { + chatID = &riskListRiskResultsForAgentChatID + err = goa.MergeErrors(err, goa.ValidateFormat("chat_id", *chatID, goa.FormatUUID)) + if err != nil { + return nil, err + } + } + } + var cursor *string + { + if riskListRiskResultsForAgentCursor != "" { + cursor = &riskListRiskResultsForAgentCursor + } + } + var limit *int + { + if riskListRiskResultsForAgentLimit != "" { + var v int64 + v, err = strconv.ParseInt(riskListRiskResultsForAgentLimit, 10, strconv.IntSize) + val := int(v) + limit = &val + if err != nil { + return nil, fmt.Errorf("invalid value for limit, must be INT") + } + if *limit < 1 { + err = goa.MergeErrors(err, goa.InvalidRangeError("limit", *limit, 1, true)) + } + if *limit > 200 { + err = goa.MergeErrors(err, goa.InvalidRangeError("limit", *limit, 200, false)) + } + if err != nil { + return nil, err + } + } + } + var apikeyToken *string + { + if riskListRiskResultsForAgentApikeyToken != "" { + apikeyToken = &riskListRiskResultsForAgentApikeyToken + } + } + var sessionToken *string + { + if riskListRiskResultsForAgentSessionToken != "" { + sessionToken = &riskListRiskResultsForAgentSessionToken + } + } + var projectSlugInput *string + { + if riskListRiskResultsForAgentProjectSlugInput != "" { + projectSlugInput = &riskListRiskResultsForAgentProjectSlugInput + } + } + v := &risk.ListRiskResultsForAgentPayload{} + v.PolicyID = policyID + v.ChatID = chatID + v.Cursor = cursor + v.Limit = limit + v.ApikeyToken = apikeyToken + v.SessionToken = sessionToken + v.ProjectSlugInput = projectSlugInput + + return v, nil +} + // BuildListRiskResultsByChatPayload builds the payload for the risk // listRiskResultsByChat endpoint from CLI flags. func BuildListRiskResultsByChatPayload(riskListRiskResultsByChatCursor string, riskListRiskResultsByChatLimit string, riskListRiskResultsByChatApikeyToken string, riskListRiskResultsByChatSessionToken string, riskListRiskResultsByChatProjectSlugInput string) (*risk.ListRiskResultsByChatPayload, error) { diff --git a/server/gen/http/risk/client/client.go b/server/gen/http/risk/client/client.go index b54120b223..5808dd9d5d 100644 --- a/server/gen/http/risk/client/client.go +++ b/server/gen/http/risk/client/client.go @@ -45,6 +45,10 @@ type Client struct { // listRiskResults endpoint. ListRiskResultsDoer goahttp.Doer + // ListRiskResultsForAgent Doer is the HTTP client used to make requests to the + // listRiskResultsForAgent endpoint. + ListRiskResultsForAgentDoer goahttp.Doer + // ListRiskResultsByChat Doer is the HTTP client used to make requests to the // listRiskResultsByChat endpoint. ListRiskResultsByChatDoer goahttp.Doer @@ -112,6 +116,7 @@ func NewClient( UpdateRiskPolicyDoer: doer, DeleteRiskPolicyDoer: doer, ListRiskResultsDoer: doer, + ListRiskResultsForAgentDoer: doer, ListRiskResultsByChatDoer: doer, GetRiskOverviewDoer: doer, ListRiskCategoriesDoer: doer, @@ -298,6 +303,30 @@ func (c *Client) ListRiskResults() goa.Endpoint { } } +// ListRiskResultsForAgent returns an endpoint that makes HTTP requests to the +// risk service listRiskResultsForAgent server. +func (c *Client) ListRiskResultsForAgent() goa.Endpoint { + var ( + encodeRequest = EncodeListRiskResultsForAgentRequest(c.encoder) + decodeResponse = DecodeListRiskResultsForAgentResponse(c.decoder, c.RestoreResponseBody) + ) + return func(ctx context.Context, v any) (any, error) { + req, err := c.BuildListRiskResultsForAgentRequest(ctx, v) + if err != nil { + return nil, err + } + err = encodeRequest(req, v) + if err != nil { + return nil, err + } + resp, err := c.ListRiskResultsForAgentDoer.Do(req) + if err != nil { + return nil, goahttp.ErrRequestError("risk", "listRiskResultsForAgent", err) + } + return decodeResponse(resp) + } +} + // ListRiskResultsByChat returns an endpoint that makes HTTP requests to the // risk service listRiskResultsByChat server. func (c *Client) ListRiskResultsByChat() goa.Endpoint { diff --git a/server/gen/http/risk/client/encode_decode.go b/server/gen/http/risk/client/encode_decode.go index fa9c8f98e1..49700b9f18 100644 --- a/server/gen/http/risk/client/encode_decode.go +++ b/server/gen/http/risk/client/encode_decode.go @@ -1716,6 +1716,259 @@ func DecodeListRiskResultsResponse(decoder func(*http.Response) goahttp.Decoder, } } +// BuildListRiskResultsForAgentRequest instantiates a HTTP request object with +// method and path set to call the "risk" service "listRiskResultsForAgent" +// endpoint +func (c *Client) BuildListRiskResultsForAgentRequest(ctx context.Context, v any) (*http.Request, error) { + u := &url.URL{Scheme: c.scheme, Host: c.host, Path: ListRiskResultsForAgentRiskPath()} + req, err := http.NewRequest("GET", u.String(), nil) + if err != nil { + return nil, goahttp.ErrInvalidURL("risk", "listRiskResultsForAgent", u.String(), err) + } + if ctx != nil { + req = req.WithContext(ctx) + } + + return req, nil +} + +// EncodeListRiskResultsForAgentRequest returns an encoder for requests sent to +// the risk listRiskResultsForAgent server. +func EncodeListRiskResultsForAgentRequest(encoder func(*http.Request) goahttp.Encoder) func(*http.Request, any) error { + return func(req *http.Request, v any) error { + p, ok := v.(*risk.ListRiskResultsForAgentPayload) + if !ok { + return goahttp.ErrInvalidType("risk", "listRiskResultsForAgent", "*risk.ListRiskResultsForAgentPayload", v) + } + if p.ApikeyToken != nil { + head := *p.ApikeyToken + req.Header.Set("Gram-Key", head) + } + if p.SessionToken != nil { + head := *p.SessionToken + req.Header.Set("Gram-Session", head) + } + if p.ProjectSlugInput != nil { + head := *p.ProjectSlugInput + req.Header.Set("Gram-Project", head) + } + values := req.URL.Query() + if p.PolicyID != nil { + values.Add("policy_id", *p.PolicyID) + } + if p.ChatID != nil { + values.Add("chat_id", *p.ChatID) + } + if p.Cursor != nil { + values.Add("cursor", *p.Cursor) + } + if p.Limit != nil { + values.Add("limit", fmt.Sprintf("%v", *p.Limit)) + } + req.URL.RawQuery = values.Encode() + return nil + } +} + +// DecodeListRiskResultsForAgentResponse returns a decoder for responses +// returned by the risk listRiskResultsForAgent endpoint. restoreBody controls +// whether the response body should be restored after having been read. +// DecodeListRiskResultsForAgentResponse may return the following errors: +// - "unauthorized" (type *goa.ServiceError): http.StatusUnauthorized +// - "forbidden" (type *goa.ServiceError): http.StatusForbidden +// - "bad_request" (type *goa.ServiceError): http.StatusBadRequest +// - "not_found" (type *goa.ServiceError): http.StatusNotFound +// - "conflict" (type *goa.ServiceError): http.StatusConflict +// - "unsupported_media" (type *goa.ServiceError): http.StatusUnsupportedMediaType +// - "invalid" (type *goa.ServiceError): http.StatusUnprocessableEntity +// - "invariant_violation" (type *goa.ServiceError): http.StatusInternalServerError +// - "unexpected" (type *goa.ServiceError): http.StatusInternalServerError +// - "gateway_error" (type *goa.ServiceError): http.StatusBadGateway +// - error: internal error +func DecodeListRiskResultsForAgentResponse(decoder func(*http.Response) goahttp.Decoder, restoreBody bool) func(*http.Response) (any, error) { + return func(resp *http.Response) (any, error) { + if restoreBody { + b, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + resp.Body = io.NopCloser(bytes.NewBuffer(b)) + defer func() { + resp.Body = io.NopCloser(bytes.NewBuffer(b)) + }() + } else { + defer resp.Body.Close() + } + switch resp.StatusCode { + case http.StatusOK: + var ( + body ListRiskResultsForAgentResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + res := NewListRiskResultsForAgentResultOK(&body) + return res, nil + case http.StatusUnauthorized: + var ( + body ListRiskResultsForAgentUnauthorizedResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentUnauthorizedResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + return nil, NewListRiskResultsForAgentUnauthorized(&body) + case http.StatusForbidden: + var ( + body ListRiskResultsForAgentForbiddenResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentForbiddenResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + return nil, NewListRiskResultsForAgentForbidden(&body) + case http.StatusBadRequest: + var ( + body ListRiskResultsForAgentBadRequestResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentBadRequestResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + return nil, NewListRiskResultsForAgentBadRequest(&body) + case http.StatusNotFound: + var ( + body ListRiskResultsForAgentNotFoundResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentNotFoundResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + return nil, NewListRiskResultsForAgentNotFound(&body) + case http.StatusConflict: + var ( + body ListRiskResultsForAgentConflictResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentConflictResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + return nil, NewListRiskResultsForAgentConflict(&body) + case http.StatusUnsupportedMediaType: + var ( + body ListRiskResultsForAgentUnsupportedMediaResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentUnsupportedMediaResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + return nil, NewListRiskResultsForAgentUnsupportedMedia(&body) + case http.StatusUnprocessableEntity: + var ( + body ListRiskResultsForAgentInvalidResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentInvalidResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + return nil, NewListRiskResultsForAgentInvalid(&body) + case http.StatusInternalServerError: + en := resp.Header.Get("goa-error") + switch en { + case "invariant_violation": + var ( + body ListRiskResultsForAgentInvariantViolationResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentInvariantViolationResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + return nil, NewListRiskResultsForAgentInvariantViolation(&body) + case "unexpected": + var ( + body ListRiskResultsForAgentUnexpectedResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentUnexpectedResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + return nil, NewListRiskResultsForAgentUnexpected(&body) + default: + body, _ := io.ReadAll(resp.Body) + return nil, goahttp.ErrInvalidResponse("risk", "listRiskResultsForAgent", resp.StatusCode, string(body)) + } + case http.StatusBadGateway: + var ( + body ListRiskResultsForAgentGatewayErrorResponseBody + err error + ) + err = decoder(resp).Decode(&body) + if err != nil { + return nil, goahttp.ErrDecodingError("risk", "listRiskResultsForAgent", err) + } + err = ValidateListRiskResultsForAgentGatewayErrorResponseBody(&body) + if err != nil { + return nil, goahttp.ErrValidationError("risk", "listRiskResultsForAgent", err) + } + return nil, NewListRiskResultsForAgentGatewayError(&body) + default: + body, _ := io.ReadAll(resp.Body) + return nil, goahttp.ErrInvalidResponse("risk", "listRiskResultsForAgent", resp.StatusCode, string(body)) + } + } +} + // BuildListRiskResultsByChatRequest instantiates a HTTP request object with // method and path set to call the "risk" service "listRiskResultsByChat" // endpoint @@ -4194,6 +4447,36 @@ func unmarshalRiskResultResponseBodyToTypesRiskResult(v *RiskResultResponseBody) return res } +// unmarshalRiskResultRedactedResponseBodyToTypesRiskResultRedacted builds a +// value of type *types.RiskResultRedacted from a value of type +// *RiskResultRedactedResponseBody. +func unmarshalRiskResultRedactedResponseBodyToTypesRiskResultRedacted(v *RiskResultRedactedResponseBody) *types.RiskResultRedacted { + res := &types.RiskResultRedacted{ + ID: *v.ID, + PolicyID: *v.PolicyID, + PolicyVersion: *v.PolicyVersion, + ChatMessageID: *v.ChatMessageID, + ChatID: v.ChatID, + ChatTitle: v.ChatTitle, + UserID: v.UserID, + Source: *v.Source, + RuleID: v.RuleID, + Description: v.Description, + MatchRedacted: *v.MatchRedacted, + PositionKnown: *v.PositionKnown, + Confidence: v.Confidence, + CreatedAt: *v.CreatedAt, + } + if v.Tags != nil { + res.Tags = make([]string, len(v.Tags)) + for i, val := range v.Tags { + res.Tags[i] = val + } + } + + return res +} + // unmarshalRiskChatSummaryResponseBodyToTypesRiskChatSummary builds a value of // type *types.RiskChatSummary from a value of type // *RiskChatSummaryResponseBody. diff --git a/server/gen/http/risk/client/paths.go b/server/gen/http/risk/client/paths.go index 23f864d5d5..de70fd09eb 100644 --- a/server/gen/http/risk/client/paths.go +++ b/server/gen/http/risk/client/paths.go @@ -42,6 +42,11 @@ func ListRiskResultsRiskPath() string { return "/rpc/risk.results.list" } +// ListRiskResultsForAgentRiskPath returns the URL path to the risk service listRiskResultsForAgent HTTP endpoint. +func ListRiskResultsForAgentRiskPath() string { + return "/rpc/risk.results.listForAgent" +} + // ListRiskResultsByChatRiskPath returns the URL path to the risk service listRiskResultsByChat HTTP endpoint. func ListRiskResultsByChatRiskPath() string { return "/rpc/risk.results.byChat" diff --git a/server/gen/http/risk/client/types.go b/server/gen/http/risk/client/types.go index 6e54b739ea..b478642ea3 100644 --- a/server/gen/http/risk/client/types.go +++ b/server/gen/http/risk/client/types.go @@ -222,6 +222,17 @@ type ListRiskResultsResponseBody struct { NextCursor *string `form:"next_cursor,omitempty" json:"next_cursor,omitempty" xml:"next_cursor,omitempty"` } +// ListRiskResultsForAgentResponseBody is the type of the "risk" service +// "listRiskResultsForAgent" endpoint HTTP response body. +type ListRiskResultsForAgentResponseBody struct { + // The list of risk results with match content redacted to opaque fingerprints. + Results []*RiskResultRedactedResponseBody `form:"results,omitempty" json:"results,omitempty" xml:"results,omitempty"` + // Total number of findings across all enabled policies. + TotalCount *int64 `form:"total_count,omitempty" json:"total_count,omitempty" xml:"total_count,omitempty"` + // Cursor for the next page of results. + NextCursor *string `form:"next_cursor,omitempty" json:"next_cursor,omitempty" xml:"next_cursor,omitempty"` +} + // ListRiskResultsByChatResponseBody is the type of the "risk" service // "listRiskResultsByChat" endpoint HTTP response body. type ListRiskResultsByChatResponseBody struct { @@ -1616,6 +1627,196 @@ type ListRiskResultsGatewayErrorResponseBody struct { Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` } +// ListRiskResultsForAgentUnauthorizedResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "unauthorized" error. +type ListRiskResultsForAgentUnauthorizedResponseBody struct { + // Name is the name of this class of errors. + Name *string `form:"name,omitempty" json:"name,omitempty" xml:"name,omitempty"` + // ID is a unique identifier for this particular occurrence of the problem. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` + // Is the error temporary? + Temporary *bool `form:"temporary,omitempty" json:"temporary,omitempty" xml:"temporary,omitempty"` + // Is the error a timeout? + Timeout *bool `form:"timeout,omitempty" json:"timeout,omitempty" xml:"timeout,omitempty"` + // Is the error a server-side fault? + Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` +} + +// ListRiskResultsForAgentForbiddenResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "forbidden" error. +type ListRiskResultsForAgentForbiddenResponseBody struct { + // Name is the name of this class of errors. + Name *string `form:"name,omitempty" json:"name,omitempty" xml:"name,omitempty"` + // ID is a unique identifier for this particular occurrence of the problem. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` + // Is the error temporary? + Temporary *bool `form:"temporary,omitempty" json:"temporary,omitempty" xml:"temporary,omitempty"` + // Is the error a timeout? + Timeout *bool `form:"timeout,omitempty" json:"timeout,omitempty" xml:"timeout,omitempty"` + // Is the error a server-side fault? + Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` +} + +// ListRiskResultsForAgentBadRequestResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "bad_request" error. +type ListRiskResultsForAgentBadRequestResponseBody struct { + // Name is the name of this class of errors. + Name *string `form:"name,omitempty" json:"name,omitempty" xml:"name,omitempty"` + // ID is a unique identifier for this particular occurrence of the problem. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` + // Is the error temporary? + Temporary *bool `form:"temporary,omitempty" json:"temporary,omitempty" xml:"temporary,omitempty"` + // Is the error a timeout? + Timeout *bool `form:"timeout,omitempty" json:"timeout,omitempty" xml:"timeout,omitempty"` + // Is the error a server-side fault? + Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` +} + +// ListRiskResultsForAgentNotFoundResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "not_found" error. +type ListRiskResultsForAgentNotFoundResponseBody struct { + // Name is the name of this class of errors. + Name *string `form:"name,omitempty" json:"name,omitempty" xml:"name,omitempty"` + // ID is a unique identifier for this particular occurrence of the problem. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` + // Is the error temporary? + Temporary *bool `form:"temporary,omitempty" json:"temporary,omitempty" xml:"temporary,omitempty"` + // Is the error a timeout? + Timeout *bool `form:"timeout,omitempty" json:"timeout,omitempty" xml:"timeout,omitempty"` + // Is the error a server-side fault? + Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` +} + +// ListRiskResultsForAgentConflictResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "conflict" error. +type ListRiskResultsForAgentConflictResponseBody struct { + // Name is the name of this class of errors. + Name *string `form:"name,omitempty" json:"name,omitempty" xml:"name,omitempty"` + // ID is a unique identifier for this particular occurrence of the problem. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` + // Is the error temporary? + Temporary *bool `form:"temporary,omitempty" json:"temporary,omitempty" xml:"temporary,omitempty"` + // Is the error a timeout? + Timeout *bool `form:"timeout,omitempty" json:"timeout,omitempty" xml:"timeout,omitempty"` + // Is the error a server-side fault? + Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` +} + +// ListRiskResultsForAgentUnsupportedMediaResponseBody is the type of the +// "risk" service "listRiskResultsForAgent" endpoint HTTP response body for the +// "unsupported_media" error. +type ListRiskResultsForAgentUnsupportedMediaResponseBody struct { + // Name is the name of this class of errors. + Name *string `form:"name,omitempty" json:"name,omitempty" xml:"name,omitempty"` + // ID is a unique identifier for this particular occurrence of the problem. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` + // Is the error temporary? + Temporary *bool `form:"temporary,omitempty" json:"temporary,omitempty" xml:"temporary,omitempty"` + // Is the error a timeout? + Timeout *bool `form:"timeout,omitempty" json:"timeout,omitempty" xml:"timeout,omitempty"` + // Is the error a server-side fault? + Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` +} + +// ListRiskResultsForAgentInvalidResponseBody is the type of the "risk" service +// "listRiskResultsForAgent" endpoint HTTP response body for the "invalid" +// error. +type ListRiskResultsForAgentInvalidResponseBody struct { + // Name is the name of this class of errors. + Name *string `form:"name,omitempty" json:"name,omitempty" xml:"name,omitempty"` + // ID is a unique identifier for this particular occurrence of the problem. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` + // Is the error temporary? + Temporary *bool `form:"temporary,omitempty" json:"temporary,omitempty" xml:"temporary,omitempty"` + // Is the error a timeout? + Timeout *bool `form:"timeout,omitempty" json:"timeout,omitempty" xml:"timeout,omitempty"` + // Is the error a server-side fault? + Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` +} + +// ListRiskResultsForAgentInvariantViolationResponseBody is the type of the +// "risk" service "listRiskResultsForAgent" endpoint HTTP response body for the +// "invariant_violation" error. +type ListRiskResultsForAgentInvariantViolationResponseBody struct { + // Name is the name of this class of errors. + Name *string `form:"name,omitempty" json:"name,omitempty" xml:"name,omitempty"` + // ID is a unique identifier for this particular occurrence of the problem. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` + // Is the error temporary? + Temporary *bool `form:"temporary,omitempty" json:"temporary,omitempty" xml:"temporary,omitempty"` + // Is the error a timeout? + Timeout *bool `form:"timeout,omitempty" json:"timeout,omitempty" xml:"timeout,omitempty"` + // Is the error a server-side fault? + Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` +} + +// ListRiskResultsForAgentUnexpectedResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "unexpected" error. +type ListRiskResultsForAgentUnexpectedResponseBody struct { + // Name is the name of this class of errors. + Name *string `form:"name,omitempty" json:"name,omitempty" xml:"name,omitempty"` + // ID is a unique identifier for this particular occurrence of the problem. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` + // Is the error temporary? + Temporary *bool `form:"temporary,omitempty" json:"temporary,omitempty" xml:"temporary,omitempty"` + // Is the error a timeout? + Timeout *bool `form:"timeout,omitempty" json:"timeout,omitempty" xml:"timeout,omitempty"` + // Is the error a server-side fault? + Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` +} + +// ListRiskResultsForAgentGatewayErrorResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "gateway_error" error. +type ListRiskResultsForAgentGatewayErrorResponseBody struct { + // Name is the name of this class of errors. + Name *string `form:"name,omitempty" json:"name,omitempty" xml:"name,omitempty"` + // ID is a unique identifier for this particular occurrence of the problem. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message *string `form:"message,omitempty" json:"message,omitempty" xml:"message,omitempty"` + // Is the error temporary? + Temporary *bool `form:"temporary,omitempty" json:"temporary,omitempty" xml:"temporary,omitempty"` + // Is the error a timeout? + Timeout *bool `form:"timeout,omitempty" json:"timeout,omitempty" xml:"timeout,omitempty"` + // Is the error a server-side fault? + Fault *bool `form:"fault,omitempty" json:"fault,omitempty" xml:"fault,omitempty"` +} + // ListRiskResultsByChatUnauthorizedResponseBody is the type of the "risk" // service "listRiskResultsByChat" endpoint HTTP response body for the // "unauthorized" error. @@ -3546,6 +3747,47 @@ type RiskResultResponseBody struct { CreatedAt *string `form:"created_at,omitempty" json:"created_at,omitempty" xml:"created_at,omitempty"` } +// RiskResultRedactedResponseBody is used to define fields on response body +// types. +type RiskResultRedactedResponseBody struct { + // The result ID. + ID *string `form:"id,omitempty" json:"id,omitempty" xml:"id,omitempty"` + // The risk policy ID. + PolicyID *string `form:"policy_id,omitempty" json:"policy_id,omitempty" xml:"policy_id,omitempty"` + // Policy version when this result was produced. + PolicyVersion *int64 `form:"policy_version,omitempty" json:"policy_version,omitempty" xml:"policy_version,omitempty"` + // The chat message that was scanned. + ChatMessageID *string `form:"chat_message_id,omitempty" json:"chat_message_id,omitempty" xml:"chat_message_id,omitempty"` + // The chat session containing the message. + ChatID *string `form:"chat_id,omitempty" json:"chat_id,omitempty" xml:"chat_id,omitempty"` + // Title of the chat session. + ChatTitle *string `form:"chat_title,omitempty" json:"chat_title,omitempty" xml:"chat_title,omitempty"` + // The user who owns the chat session. + UserID *string `form:"user_id,omitempty" json:"user_id,omitempty" xml:"user_id,omitempty"` + // Detection source (e.g. gitleaks, presidio, shadow_mcp). + Source *string `form:"source,omitempty" json:"source,omitempty" xml:"source,omitempty"` + // The matched rule identifier. + RuleID *string `form:"rule_id,omitempty" json:"rule_id,omitempty" xml:"rule_id,omitempty"` + // Human-readable description of the finding. + Description *string `form:"description,omitempty" json:"description,omitempty" xml:"description,omitempty"` + // Opaque fingerprint of the original match in the form `` where N is the byte length of the original match and XXXXXXXX + // is the first 8 hex characters of sha256(match). For shadow_mcp findings the + // original match value (a non-sensitive server URL or command identifier) is + // passed through verbatim. + MatchRedacted *string `form:"match_redacted,omitempty" json:"match_redacted,omitempty" xml:"match_redacted,omitempty"` + // Whether the original finding carried byte-position information within the + // source message. Exact positions are intentionally not exposed to avoid + // reconstruction attacks. + PositionKnown *bool `form:"position_known,omitempty" json:"position_known,omitempty" xml:"position_known,omitempty"` + // Confidence score for this finding. + Confidence *float64 `form:"confidence,omitempty" json:"confidence,omitempty" xml:"confidence,omitempty"` + // Tags from the detection rule. + Tags []string `form:"tags,omitempty" json:"tags,omitempty" xml:"tags,omitempty"` + // When this result was created. + CreatedAt *string `form:"created_at,omitempty" json:"created_at,omitempty" xml:"created_at,omitempty"` +} + // RiskChatSummaryResponseBody is used to define fields on response body types. type RiskChatSummaryResponseBody struct { // The chat session ID. @@ -4945,27 +5187,28 @@ func NewListRiskResultsGatewayError(body *ListRiskResultsGatewayErrorResponseBod return v } -// NewListRiskResultsByChatResultOK builds a "risk" service -// "listRiskResultsByChat" endpoint result from a HTTP "OK" response. -func NewListRiskResultsByChatResultOK(body *ListRiskResultsByChatResponseBody) *risk.ListRiskResultsByChatResult { - v := &risk.ListRiskResultsByChatResult{ +// NewListRiskResultsForAgentResultOK builds a "risk" service +// "listRiskResultsForAgent" endpoint result from a HTTP "OK" response. +func NewListRiskResultsForAgentResultOK(body *ListRiskResultsForAgentResponseBody) *risk.ListRiskResultsForAgentResult { + v := &risk.ListRiskResultsForAgentResult{ + TotalCount: *body.TotalCount, NextCursor: body.NextCursor, } - v.Chats = make([]*types.RiskChatSummary, len(body.Chats)) - for i, val := range body.Chats { + v.Results = make([]*types.RiskResultRedacted, len(body.Results)) + for i, val := range body.Results { if val == nil { - v.Chats[i] = nil + v.Results[i] = nil continue } - v.Chats[i] = unmarshalRiskChatSummaryResponseBodyToTypesRiskChatSummary(val) + v.Results[i] = unmarshalRiskResultRedactedResponseBodyToTypesRiskResultRedacted(val) } return v } -// NewListRiskResultsByChatUnauthorized builds a risk service -// listRiskResultsByChat endpoint unauthorized error. -func NewListRiskResultsByChatUnauthorized(body *ListRiskResultsByChatUnauthorizedResponseBody) *goa.ServiceError { +// NewListRiskResultsForAgentUnauthorized builds a risk service +// listRiskResultsForAgent endpoint unauthorized error. +func NewListRiskResultsForAgentUnauthorized(body *ListRiskResultsForAgentUnauthorizedResponseBody) *goa.ServiceError { v := &goa.ServiceError{ Name: *body.Name, ID: *body.ID, @@ -4978,9 +5221,9 @@ func NewListRiskResultsByChatUnauthorized(body *ListRiskResultsByChatUnauthorize return v } -// NewListRiskResultsByChatForbidden builds a risk service -// listRiskResultsByChat endpoint forbidden error. -func NewListRiskResultsByChatForbidden(body *ListRiskResultsByChatForbiddenResponseBody) *goa.ServiceError { +// NewListRiskResultsForAgentForbidden builds a risk service +// listRiskResultsForAgent endpoint forbidden error. +func NewListRiskResultsForAgentForbidden(body *ListRiskResultsForAgentForbiddenResponseBody) *goa.ServiceError { v := &goa.ServiceError{ Name: *body.Name, ID: *body.ID, @@ -4993,9 +5236,9 @@ func NewListRiskResultsByChatForbidden(body *ListRiskResultsByChatForbiddenRespo return v } -// NewListRiskResultsByChatBadRequest builds a risk service -// listRiskResultsByChat endpoint bad_request error. -func NewListRiskResultsByChatBadRequest(body *ListRiskResultsByChatBadRequestResponseBody) *goa.ServiceError { +// NewListRiskResultsForAgentBadRequest builds a risk service +// listRiskResultsForAgent endpoint bad_request error. +func NewListRiskResultsForAgentBadRequest(body *ListRiskResultsForAgentBadRequestResponseBody) *goa.ServiceError { v := &goa.ServiceError{ Name: *body.Name, ID: *body.ID, @@ -5008,9 +5251,9 @@ func NewListRiskResultsByChatBadRequest(body *ListRiskResultsByChatBadRequestRes return v } -// NewListRiskResultsByChatNotFound builds a risk service listRiskResultsByChat -// endpoint not_found error. -func NewListRiskResultsByChatNotFound(body *ListRiskResultsByChatNotFoundResponseBody) *goa.ServiceError { +// NewListRiskResultsForAgentNotFound builds a risk service +// listRiskResultsForAgent endpoint not_found error. +func NewListRiskResultsForAgentNotFound(body *ListRiskResultsForAgentNotFoundResponseBody) *goa.ServiceError { v := &goa.ServiceError{ Name: *body.Name, ID: *body.ID, @@ -5023,9 +5266,9 @@ func NewListRiskResultsByChatNotFound(body *ListRiskResultsByChatNotFoundRespons return v } -// NewListRiskResultsByChatConflict builds a risk service listRiskResultsByChat -// endpoint conflict error. -func NewListRiskResultsByChatConflict(body *ListRiskResultsByChatConflictResponseBody) *goa.ServiceError { +// NewListRiskResultsForAgentConflict builds a risk service +// listRiskResultsForAgent endpoint conflict error. +func NewListRiskResultsForAgentConflict(body *ListRiskResultsForAgentConflictResponseBody) *goa.ServiceError { v := &goa.ServiceError{ Name: *body.Name, ID: *body.ID, @@ -5038,9 +5281,9 @@ func NewListRiskResultsByChatConflict(body *ListRiskResultsByChatConflictRespons return v } -// NewListRiskResultsByChatUnsupportedMedia builds a risk service -// listRiskResultsByChat endpoint unsupported_media error. -func NewListRiskResultsByChatUnsupportedMedia(body *ListRiskResultsByChatUnsupportedMediaResponseBody) *goa.ServiceError { +// NewListRiskResultsForAgentUnsupportedMedia builds a risk service +// listRiskResultsForAgent endpoint unsupported_media error. +func NewListRiskResultsForAgentUnsupportedMedia(body *ListRiskResultsForAgentUnsupportedMediaResponseBody) *goa.ServiceError { v := &goa.ServiceError{ Name: *body.Name, ID: *body.ID, @@ -5053,9 +5296,9 @@ func NewListRiskResultsByChatUnsupportedMedia(body *ListRiskResultsByChatUnsuppo return v } -// NewListRiskResultsByChatInvalid builds a risk service listRiskResultsByChat -// endpoint invalid error. -func NewListRiskResultsByChatInvalid(body *ListRiskResultsByChatInvalidResponseBody) *goa.ServiceError { +// NewListRiskResultsForAgentInvalid builds a risk service +// listRiskResultsForAgent endpoint invalid error. +func NewListRiskResultsForAgentInvalid(body *ListRiskResultsForAgentInvalidResponseBody) *goa.ServiceError { v := &goa.ServiceError{ Name: *body.Name, ID: *body.ID, @@ -5068,9 +5311,9 @@ func NewListRiskResultsByChatInvalid(body *ListRiskResultsByChatInvalidResponseB return v } -// NewListRiskResultsByChatInvariantViolation builds a risk service -// listRiskResultsByChat endpoint invariant_violation error. -func NewListRiskResultsByChatInvariantViolation(body *ListRiskResultsByChatInvariantViolationResponseBody) *goa.ServiceError { +// NewListRiskResultsForAgentInvariantViolation builds a risk service +// listRiskResultsForAgent endpoint invariant_violation error. +func NewListRiskResultsForAgentInvariantViolation(body *ListRiskResultsForAgentInvariantViolationResponseBody) *goa.ServiceError { v := &goa.ServiceError{ Name: *body.Name, ID: *body.ID, @@ -5083,9 +5326,9 @@ func NewListRiskResultsByChatInvariantViolation(body *ListRiskResultsByChatInvar return v } -// NewListRiskResultsByChatUnexpected builds a risk service -// listRiskResultsByChat endpoint unexpected error. -func NewListRiskResultsByChatUnexpected(body *ListRiskResultsByChatUnexpectedResponseBody) *goa.ServiceError { +// NewListRiskResultsForAgentUnexpected builds a risk service +// listRiskResultsForAgent endpoint unexpected error. +func NewListRiskResultsForAgentUnexpected(body *ListRiskResultsForAgentUnexpectedResponseBody) *goa.ServiceError { v := &goa.ServiceError{ Name: *body.Name, ID: *body.ID, @@ -5098,9 +5341,9 @@ func NewListRiskResultsByChatUnexpected(body *ListRiskResultsByChatUnexpectedRes return v } -// NewListRiskResultsByChatGatewayError builds a risk service -// listRiskResultsByChat endpoint gateway_error error. -func NewListRiskResultsByChatGatewayError(body *ListRiskResultsByChatGatewayErrorResponseBody) *goa.ServiceError { +// NewListRiskResultsForAgentGatewayError builds a risk service +// listRiskResultsForAgent endpoint gateway_error error. +func NewListRiskResultsForAgentGatewayError(body *ListRiskResultsForAgentGatewayErrorResponseBody) *goa.ServiceError { v := &goa.ServiceError{ Name: *body.Name, ID: *body.ID, @@ -5113,21 +5356,189 @@ func NewListRiskResultsByChatGatewayError(body *ListRiskResultsByChatGatewayErro return v } -// NewGetRiskOverviewRiskOverviewResultOK builds a "risk" service -// "getRiskOverview" endpoint result from a HTTP "OK" response. -func NewGetRiskOverviewRiskOverviewResultOK(body *GetRiskOverviewResponseBody) *risk.RiskOverviewResult { - v := &risk.RiskOverviewResult{ - From: *body.From, - To: *body.To, - MessagesScanned: *body.MessagesScanned, - Findings: *body.Findings, - FlaggedSessions: *body.FlaggedSessions, - ActivePolicies: *body.ActivePolicies, +// NewListRiskResultsByChatResultOK builds a "risk" service +// "listRiskResultsByChat" endpoint result from a HTTP "OK" response. +func NewListRiskResultsByChatResultOK(body *ListRiskResultsByChatResponseBody) *risk.ListRiskResultsByChatResult { + v := &risk.ListRiskResultsByChatResult{ + NextCursor: body.NextCursor, } - v.TopCategories = make([]*risk.RiskOverviewCategory, len(body.TopCategories)) - for i, val := range body.TopCategories { + v.Chats = make([]*types.RiskChatSummary, len(body.Chats)) + for i, val := range body.Chats { if val == nil { - v.TopCategories[i] = nil + v.Chats[i] = nil + continue + } + v.Chats[i] = unmarshalRiskChatSummaryResponseBodyToTypesRiskChatSummary(val) + } + + return v +} + +// NewListRiskResultsByChatUnauthorized builds a risk service +// listRiskResultsByChat endpoint unauthorized error. +func NewListRiskResultsByChatUnauthorized(body *ListRiskResultsByChatUnauthorizedResponseBody) *goa.ServiceError { + v := &goa.ServiceError{ + Name: *body.Name, + ID: *body.ID, + Message: *body.Message, + Temporary: *body.Temporary, + Timeout: *body.Timeout, + Fault: *body.Fault, + } + + return v +} + +// NewListRiskResultsByChatForbidden builds a risk service +// listRiskResultsByChat endpoint forbidden error. +func NewListRiskResultsByChatForbidden(body *ListRiskResultsByChatForbiddenResponseBody) *goa.ServiceError { + v := &goa.ServiceError{ + Name: *body.Name, + ID: *body.ID, + Message: *body.Message, + Temporary: *body.Temporary, + Timeout: *body.Timeout, + Fault: *body.Fault, + } + + return v +} + +// NewListRiskResultsByChatBadRequest builds a risk service +// listRiskResultsByChat endpoint bad_request error. +func NewListRiskResultsByChatBadRequest(body *ListRiskResultsByChatBadRequestResponseBody) *goa.ServiceError { + v := &goa.ServiceError{ + Name: *body.Name, + ID: *body.ID, + Message: *body.Message, + Temporary: *body.Temporary, + Timeout: *body.Timeout, + Fault: *body.Fault, + } + + return v +} + +// NewListRiskResultsByChatNotFound builds a risk service listRiskResultsByChat +// endpoint not_found error. +func NewListRiskResultsByChatNotFound(body *ListRiskResultsByChatNotFoundResponseBody) *goa.ServiceError { + v := &goa.ServiceError{ + Name: *body.Name, + ID: *body.ID, + Message: *body.Message, + Temporary: *body.Temporary, + Timeout: *body.Timeout, + Fault: *body.Fault, + } + + return v +} + +// NewListRiskResultsByChatConflict builds a risk service listRiskResultsByChat +// endpoint conflict error. +func NewListRiskResultsByChatConflict(body *ListRiskResultsByChatConflictResponseBody) *goa.ServiceError { + v := &goa.ServiceError{ + Name: *body.Name, + ID: *body.ID, + Message: *body.Message, + Temporary: *body.Temporary, + Timeout: *body.Timeout, + Fault: *body.Fault, + } + + return v +} + +// NewListRiskResultsByChatUnsupportedMedia builds a risk service +// listRiskResultsByChat endpoint unsupported_media error. +func NewListRiskResultsByChatUnsupportedMedia(body *ListRiskResultsByChatUnsupportedMediaResponseBody) *goa.ServiceError { + v := &goa.ServiceError{ + Name: *body.Name, + ID: *body.ID, + Message: *body.Message, + Temporary: *body.Temporary, + Timeout: *body.Timeout, + Fault: *body.Fault, + } + + return v +} + +// NewListRiskResultsByChatInvalid builds a risk service listRiskResultsByChat +// endpoint invalid error. +func NewListRiskResultsByChatInvalid(body *ListRiskResultsByChatInvalidResponseBody) *goa.ServiceError { + v := &goa.ServiceError{ + Name: *body.Name, + ID: *body.ID, + Message: *body.Message, + Temporary: *body.Temporary, + Timeout: *body.Timeout, + Fault: *body.Fault, + } + + return v +} + +// NewListRiskResultsByChatInvariantViolation builds a risk service +// listRiskResultsByChat endpoint invariant_violation error. +func NewListRiskResultsByChatInvariantViolation(body *ListRiskResultsByChatInvariantViolationResponseBody) *goa.ServiceError { + v := &goa.ServiceError{ + Name: *body.Name, + ID: *body.ID, + Message: *body.Message, + Temporary: *body.Temporary, + Timeout: *body.Timeout, + Fault: *body.Fault, + } + + return v +} + +// NewListRiskResultsByChatUnexpected builds a risk service +// listRiskResultsByChat endpoint unexpected error. +func NewListRiskResultsByChatUnexpected(body *ListRiskResultsByChatUnexpectedResponseBody) *goa.ServiceError { + v := &goa.ServiceError{ + Name: *body.Name, + ID: *body.ID, + Message: *body.Message, + Temporary: *body.Temporary, + Timeout: *body.Timeout, + Fault: *body.Fault, + } + + return v +} + +// NewListRiskResultsByChatGatewayError builds a risk service +// listRiskResultsByChat endpoint gateway_error error. +func NewListRiskResultsByChatGatewayError(body *ListRiskResultsByChatGatewayErrorResponseBody) *goa.ServiceError { + v := &goa.ServiceError{ + Name: *body.Name, + ID: *body.ID, + Message: *body.Message, + Temporary: *body.Temporary, + Timeout: *body.Timeout, + Fault: *body.Fault, + } + + return v +} + +// NewGetRiskOverviewRiskOverviewResultOK builds a "risk" service +// "getRiskOverview" endpoint result from a HTTP "OK" response. +func NewGetRiskOverviewRiskOverviewResultOK(body *GetRiskOverviewResponseBody) *risk.RiskOverviewResult { + v := &risk.RiskOverviewResult{ + From: *body.From, + To: *body.To, + MessagesScanned: *body.MessagesScanned, + Findings: *body.Findings, + FlaggedSessions: *body.FlaggedSessions, + ActivePolicies: *body.ActivePolicies, + } + v.TopCategories = make([]*risk.RiskOverviewCategory, len(body.TopCategories)) + for i, val := range body.TopCategories { + if val == nil { + v.TopCategories[i] = nil continue } v.TopCategories[i] = unmarshalRiskOverviewCategoryResponseBodyToRiskRiskOverviewCategory(val) @@ -6843,6 +7254,25 @@ func ValidateListRiskResultsResponseBody(body *ListRiskResultsResponseBody) (err return } +// ValidateListRiskResultsForAgentResponseBody runs the validations defined on +// ListRiskResultsForAgentResponseBody +func ValidateListRiskResultsForAgentResponseBody(body *ListRiskResultsForAgentResponseBody) (err error) { + if body.Results == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("results", "body")) + } + if body.TotalCount == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("total_count", "body")) + } + for _, e := range body.Results { + if e != nil { + if err2 := ValidateRiskResultRedactedResponseBody(e); err2 != nil { + err = goa.MergeErrors(err, err2) + } + } + } + return +} + // ValidateListRiskResultsByChatResponseBody runs the validations defined on // ListRiskResultsByChatResponseBody func ValidateListRiskResultsByChatResponseBody(body *ListRiskResultsByChatResponseBody) (err error) { @@ -8775,6 +9205,248 @@ func ValidateListRiskResultsGatewayErrorResponseBody(body *ListRiskResultsGatewa return } +// ValidateListRiskResultsForAgentUnauthorizedResponseBody runs the validations +// defined on listRiskResultsForAgent_unauthorized_response_body +func ValidateListRiskResultsForAgentUnauthorizedResponseBody(body *ListRiskResultsForAgentUnauthorizedResponseBody) (err error) { + if body.Name == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("name", "body")) + } + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Message == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("message", "body")) + } + if body.Temporary == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("temporary", "body")) + } + if body.Timeout == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("timeout", "body")) + } + if body.Fault == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("fault", "body")) + } + return +} + +// ValidateListRiskResultsForAgentForbiddenResponseBody runs the validations +// defined on listRiskResultsForAgent_forbidden_response_body +func ValidateListRiskResultsForAgentForbiddenResponseBody(body *ListRiskResultsForAgentForbiddenResponseBody) (err error) { + if body.Name == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("name", "body")) + } + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Message == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("message", "body")) + } + if body.Temporary == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("temporary", "body")) + } + if body.Timeout == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("timeout", "body")) + } + if body.Fault == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("fault", "body")) + } + return +} + +// ValidateListRiskResultsForAgentBadRequestResponseBody runs the validations +// defined on listRiskResultsForAgent_bad_request_response_body +func ValidateListRiskResultsForAgentBadRequestResponseBody(body *ListRiskResultsForAgentBadRequestResponseBody) (err error) { + if body.Name == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("name", "body")) + } + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Message == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("message", "body")) + } + if body.Temporary == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("temporary", "body")) + } + if body.Timeout == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("timeout", "body")) + } + if body.Fault == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("fault", "body")) + } + return +} + +// ValidateListRiskResultsForAgentNotFoundResponseBody runs the validations +// defined on listRiskResultsForAgent_not_found_response_body +func ValidateListRiskResultsForAgentNotFoundResponseBody(body *ListRiskResultsForAgentNotFoundResponseBody) (err error) { + if body.Name == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("name", "body")) + } + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Message == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("message", "body")) + } + if body.Temporary == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("temporary", "body")) + } + if body.Timeout == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("timeout", "body")) + } + if body.Fault == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("fault", "body")) + } + return +} + +// ValidateListRiskResultsForAgentConflictResponseBody runs the validations +// defined on listRiskResultsForAgent_conflict_response_body +func ValidateListRiskResultsForAgentConflictResponseBody(body *ListRiskResultsForAgentConflictResponseBody) (err error) { + if body.Name == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("name", "body")) + } + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Message == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("message", "body")) + } + if body.Temporary == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("temporary", "body")) + } + if body.Timeout == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("timeout", "body")) + } + if body.Fault == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("fault", "body")) + } + return +} + +// ValidateListRiskResultsForAgentUnsupportedMediaResponseBody runs the +// validations defined on +// listRiskResultsForAgent_unsupported_media_response_body +func ValidateListRiskResultsForAgentUnsupportedMediaResponseBody(body *ListRiskResultsForAgentUnsupportedMediaResponseBody) (err error) { + if body.Name == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("name", "body")) + } + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Message == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("message", "body")) + } + if body.Temporary == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("temporary", "body")) + } + if body.Timeout == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("timeout", "body")) + } + if body.Fault == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("fault", "body")) + } + return +} + +// ValidateListRiskResultsForAgentInvalidResponseBody runs the validations +// defined on listRiskResultsForAgent_invalid_response_body +func ValidateListRiskResultsForAgentInvalidResponseBody(body *ListRiskResultsForAgentInvalidResponseBody) (err error) { + if body.Name == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("name", "body")) + } + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Message == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("message", "body")) + } + if body.Temporary == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("temporary", "body")) + } + if body.Timeout == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("timeout", "body")) + } + if body.Fault == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("fault", "body")) + } + return +} + +// ValidateListRiskResultsForAgentInvariantViolationResponseBody runs the +// validations defined on +// listRiskResultsForAgent_invariant_violation_response_body +func ValidateListRiskResultsForAgentInvariantViolationResponseBody(body *ListRiskResultsForAgentInvariantViolationResponseBody) (err error) { + if body.Name == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("name", "body")) + } + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Message == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("message", "body")) + } + if body.Temporary == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("temporary", "body")) + } + if body.Timeout == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("timeout", "body")) + } + if body.Fault == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("fault", "body")) + } + return +} + +// ValidateListRiskResultsForAgentUnexpectedResponseBody runs the validations +// defined on listRiskResultsForAgent_unexpected_response_body +func ValidateListRiskResultsForAgentUnexpectedResponseBody(body *ListRiskResultsForAgentUnexpectedResponseBody) (err error) { + if body.Name == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("name", "body")) + } + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Message == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("message", "body")) + } + if body.Temporary == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("temporary", "body")) + } + if body.Timeout == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("timeout", "body")) + } + if body.Fault == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("fault", "body")) + } + return +} + +// ValidateListRiskResultsForAgentGatewayErrorResponseBody runs the validations +// defined on listRiskResultsForAgent_gateway_error_response_body +func ValidateListRiskResultsForAgentGatewayErrorResponseBody(body *ListRiskResultsForAgentGatewayErrorResponseBody) (err error) { + if body.Name == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("name", "body")) + } + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.Message == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("message", "body")) + } + if body.Temporary == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("temporary", "body")) + } + if body.Timeout == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("timeout", "body")) + } + if body.Fault == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("fault", "body")) + } + return +} + // ValidateListRiskResultsByChatUnauthorizedResponseBody runs the validations // defined on listRiskResultsByChat_unauthorized_response_body func ValidateListRiskResultsByChatUnauthorizedResponseBody(body *ListRiskResultsByChatUnauthorizedResponseBody) (err error) { @@ -11277,6 +11949,51 @@ func ValidateRiskResultResponseBody(body *RiskResultResponseBody) (err error) { return } +// ValidateRiskResultRedactedResponseBody runs the validations defined on +// RiskResultRedactedResponseBody +func ValidateRiskResultRedactedResponseBody(body *RiskResultRedactedResponseBody) (err error) { + if body.ID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("id", "body")) + } + if body.PolicyID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("policy_id", "body")) + } + if body.PolicyVersion == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("policy_version", "body")) + } + if body.ChatMessageID == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("chat_message_id", "body")) + } + if body.Source == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("source", "body")) + } + if body.CreatedAt == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("created_at", "body")) + } + if body.MatchRedacted == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("match_redacted", "body")) + } + if body.PositionKnown == nil { + err = goa.MergeErrors(err, goa.MissingFieldError("position_known", "body")) + } + if body.ID != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.id", *body.ID, goa.FormatUUID)) + } + if body.PolicyID != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.policy_id", *body.PolicyID, goa.FormatUUID)) + } + if body.ChatMessageID != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.chat_message_id", *body.ChatMessageID, goa.FormatUUID)) + } + if body.ChatID != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.chat_id", *body.ChatID, goa.FormatUUID)) + } + if body.CreatedAt != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("body.created_at", *body.CreatedAt, goa.FormatDateTime)) + } + return +} + // ValidateRiskChatSummaryResponseBody runs the validations defined on // RiskChatSummaryResponseBody func ValidateRiskChatSummaryResponseBody(body *RiskChatSummaryResponseBody) (err error) { diff --git a/server/gen/http/risk/server/encode_decode.go b/server/gen/http/risk/server/encode_decode.go index 488343b1fd..eda0fe5591 100644 --- a/server/gen/http/risk/server/encode_decode.go +++ b/server/gen/http/risk/server/encode_decode.go @@ -1682,6 +1682,271 @@ func EncodeListRiskResultsError(encoder func(context.Context, http.ResponseWrite } } +// EncodeListRiskResultsForAgentResponse returns an encoder for responses +// returned by the risk listRiskResultsForAgent endpoint. +func EncodeListRiskResultsForAgentResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, any) error { + return func(ctx context.Context, w http.ResponseWriter, v any) error { + res, _ := v.(*risk.ListRiskResultsForAgentResult) + enc := encoder(ctx, w) + body := NewListRiskResultsForAgentResponseBody(res) + w.WriteHeader(http.StatusOK) + return enc.Encode(body) + } +} + +// DecodeListRiskResultsForAgentRequest returns a decoder for requests sent to +// the risk listRiskResultsForAgent endpoint. +func DecodeListRiskResultsForAgentRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (*risk.ListRiskResultsForAgentPayload, error) { + return func(r *http.Request) (*risk.ListRiskResultsForAgentPayload, error) { + var payload *risk.ListRiskResultsForAgentPayload + var ( + policyID *string + chatID *string + cursor *string + limit *int + apikeyToken *string + sessionToken *string + projectSlugInput *string + err error + ) + qp := r.URL.Query() + policyIDRaw := qp.Get("policy_id") + if policyIDRaw != "" { + policyID = &policyIDRaw + } + if policyID != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("policy_id", *policyID, goa.FormatUUID)) + } + chatIDRaw := qp.Get("chat_id") + if chatIDRaw != "" { + chatID = &chatIDRaw + } + if chatID != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("chat_id", *chatID, goa.FormatUUID)) + } + cursorRaw := qp.Get("cursor") + if cursorRaw != "" { + cursor = &cursorRaw + } + { + limitRaw := qp.Get("limit") + if limitRaw != "" { + v, err2 := strconv.ParseInt(limitRaw, 10, strconv.IntSize) + if err2 != nil { + err = goa.MergeErrors(err, goa.InvalidFieldTypeError("limit", limitRaw, "integer")) + } + pv := int(v) + limit = &pv + } + } + if limit != nil { + if *limit < 1 { + err = goa.MergeErrors(err, goa.InvalidRangeError("limit", *limit, 1, true)) + } + } + if limit != nil { + if *limit > 200 { + err = goa.MergeErrors(err, goa.InvalidRangeError("limit", *limit, 200, false)) + } + } + apikeyTokenRaw := r.Header.Get("Gram-Key") + if apikeyTokenRaw != "" { + apikeyToken = &apikeyTokenRaw + } + sessionTokenRaw := r.Header.Get("Gram-Session") + if sessionTokenRaw != "" { + sessionToken = &sessionTokenRaw + } + projectSlugInputRaw := r.Header.Get("Gram-Project") + if projectSlugInputRaw != "" { + projectSlugInput = &projectSlugInputRaw + } + if err != nil { + return payload, err + } + payload = NewListRiskResultsForAgentPayload(policyID, chatID, cursor, limit, apikeyToken, sessionToken, projectSlugInput) + if payload.ApikeyToken != nil { + if strings.Contains(*payload.ApikeyToken, " ") { + // Remove authorization scheme prefix (e.g. "Bearer") + cred := strings.SplitN(*payload.ApikeyToken, " ", 2)[1] + payload.ApikeyToken = &cred + } + } + if payload.ProjectSlugInput != nil { + if strings.Contains(*payload.ProjectSlugInput, " ") { + // Remove authorization scheme prefix (e.g. "Bearer") + cred := strings.SplitN(*payload.ProjectSlugInput, " ", 2)[1] + payload.ProjectSlugInput = &cred + } + } + if payload.SessionToken != nil { + if strings.Contains(*payload.SessionToken, " ") { + // Remove authorization scheme prefix (e.g. "Bearer") + cred := strings.SplitN(*payload.SessionToken, " ", 2)[1] + payload.SessionToken = &cred + } + } + + return payload, nil + } +} + +// EncodeListRiskResultsForAgentError returns an encoder for errors returned by +// the listRiskResultsForAgent risk endpoint. +func EncodeListRiskResultsForAgentError(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, formatter func(ctx context.Context, err error) goahttp.Statuser) func(context.Context, http.ResponseWriter, error) error { + encodeError := goahttp.ErrorEncoder(encoder, formatter) + return func(ctx context.Context, w http.ResponseWriter, v error) error { + var en goa.GoaErrorNamer + if !errors.As(v, &en) { + return encodeError(ctx, w, v) + } + switch en.GoaErrorName() { + case "unauthorized": + var res *goa.ServiceError + errors.As(v, &res) + ctx = context.WithValue(ctx, goahttp.ContentTypeKey, "application/json") + enc := encoder(ctx, w) + var body any + if formatter != nil { + body = formatter(ctx, res) + } else { + body = NewListRiskResultsForAgentUnauthorizedResponseBody(res) + } + w.Header().Set("goa-error", res.GoaErrorName()) + w.WriteHeader(http.StatusUnauthorized) + return enc.Encode(body) + case "forbidden": + var res *goa.ServiceError + errors.As(v, &res) + ctx = context.WithValue(ctx, goahttp.ContentTypeKey, "application/json") + enc := encoder(ctx, w) + var body any + if formatter != nil { + body = formatter(ctx, res) + } else { + body = NewListRiskResultsForAgentForbiddenResponseBody(res) + } + w.Header().Set("goa-error", res.GoaErrorName()) + w.WriteHeader(http.StatusForbidden) + return enc.Encode(body) + case "bad_request": + var res *goa.ServiceError + errors.As(v, &res) + ctx = context.WithValue(ctx, goahttp.ContentTypeKey, "application/json") + enc := encoder(ctx, w) + var body any + if formatter != nil { + body = formatter(ctx, res) + } else { + body = NewListRiskResultsForAgentBadRequestResponseBody(res) + } + w.Header().Set("goa-error", res.GoaErrorName()) + w.WriteHeader(http.StatusBadRequest) + return enc.Encode(body) + case "not_found": + var res *goa.ServiceError + errors.As(v, &res) + ctx = context.WithValue(ctx, goahttp.ContentTypeKey, "application/json") + enc := encoder(ctx, w) + var body any + if formatter != nil { + body = formatter(ctx, res) + } else { + body = NewListRiskResultsForAgentNotFoundResponseBody(res) + } + w.Header().Set("goa-error", res.GoaErrorName()) + w.WriteHeader(http.StatusNotFound) + return enc.Encode(body) + case "conflict": + var res *goa.ServiceError + errors.As(v, &res) + ctx = context.WithValue(ctx, goahttp.ContentTypeKey, "application/json") + enc := encoder(ctx, w) + var body any + if formatter != nil { + body = formatter(ctx, res) + } else { + body = NewListRiskResultsForAgentConflictResponseBody(res) + } + w.Header().Set("goa-error", res.GoaErrorName()) + w.WriteHeader(http.StatusConflict) + return enc.Encode(body) + case "unsupported_media": + var res *goa.ServiceError + errors.As(v, &res) + ctx = context.WithValue(ctx, goahttp.ContentTypeKey, "application/json") + enc := encoder(ctx, w) + var body any + if formatter != nil { + body = formatter(ctx, res) + } else { + body = NewListRiskResultsForAgentUnsupportedMediaResponseBody(res) + } + w.Header().Set("goa-error", res.GoaErrorName()) + w.WriteHeader(http.StatusUnsupportedMediaType) + return enc.Encode(body) + case "invalid": + var res *goa.ServiceError + errors.As(v, &res) + ctx = context.WithValue(ctx, goahttp.ContentTypeKey, "application/json") + enc := encoder(ctx, w) + var body any + if formatter != nil { + body = formatter(ctx, res) + } else { + body = NewListRiskResultsForAgentInvalidResponseBody(res) + } + w.Header().Set("goa-error", res.GoaErrorName()) + w.WriteHeader(http.StatusUnprocessableEntity) + return enc.Encode(body) + case "invariant_violation": + var res *goa.ServiceError + errors.As(v, &res) + ctx = context.WithValue(ctx, goahttp.ContentTypeKey, "application/json") + enc := encoder(ctx, w) + var body any + if formatter != nil { + body = formatter(ctx, res) + } else { + body = NewListRiskResultsForAgentInvariantViolationResponseBody(res) + } + w.Header().Set("goa-error", res.GoaErrorName()) + w.WriteHeader(http.StatusInternalServerError) + return enc.Encode(body) + case "unexpected": + var res *goa.ServiceError + errors.As(v, &res) + ctx = context.WithValue(ctx, goahttp.ContentTypeKey, "application/json") + enc := encoder(ctx, w) + var body any + if formatter != nil { + body = formatter(ctx, res) + } else { + body = NewListRiskResultsForAgentUnexpectedResponseBody(res) + } + w.Header().Set("goa-error", res.GoaErrorName()) + w.WriteHeader(http.StatusInternalServerError) + return enc.Encode(body) + case "gateway_error": + var res *goa.ServiceError + errors.As(v, &res) + ctx = context.WithValue(ctx, goahttp.ContentTypeKey, "application/json") + enc := encoder(ctx, w) + var body any + if formatter != nil { + body = formatter(ctx, res) + } else { + body = NewListRiskResultsForAgentGatewayErrorResponseBody(res) + } + w.Header().Set("goa-error", res.GoaErrorName()) + w.WriteHeader(http.StatusBadGateway) + return enc.Encode(body) + default: + return encodeError(ctx, w, v) + } + } +} + // EncodeListRiskResultsByChatResponse returns an encoder for responses // returned by the risk listRiskResultsByChat endpoint. func EncodeListRiskResultsByChatResponse(encoder func(context.Context, http.ResponseWriter) goahttp.Encoder) func(context.Context, http.ResponseWriter, any) error { @@ -4098,6 +4363,36 @@ func marshalTypesRiskResultToRiskResultResponseBody(v *types.RiskResult) *RiskRe return res } +// marshalTypesRiskResultRedactedToRiskResultRedactedResponseBody builds a +// value of type *RiskResultRedactedResponseBody from a value of type +// *types.RiskResultRedacted. +func marshalTypesRiskResultRedactedToRiskResultRedactedResponseBody(v *types.RiskResultRedacted) *RiskResultRedactedResponseBody { + res := &RiskResultRedactedResponseBody{ + ID: v.ID, + PolicyID: v.PolicyID, + PolicyVersion: v.PolicyVersion, + ChatMessageID: v.ChatMessageID, + ChatID: v.ChatID, + ChatTitle: v.ChatTitle, + UserID: v.UserID, + Source: v.Source, + RuleID: v.RuleID, + Description: v.Description, + MatchRedacted: v.MatchRedacted, + PositionKnown: v.PositionKnown, + Confidence: v.Confidence, + CreatedAt: v.CreatedAt, + } + if v.Tags != nil { + res.Tags = make([]string, len(v.Tags)) + for i, val := range v.Tags { + res.Tags[i] = val + } + } + + return res +} + // marshalTypesRiskChatSummaryToRiskChatSummaryResponseBody builds a value of // type *RiskChatSummaryResponseBody from a value of type // *types.RiskChatSummary. diff --git a/server/gen/http/risk/server/paths.go b/server/gen/http/risk/server/paths.go index d11667524c..b61177ab77 100644 --- a/server/gen/http/risk/server/paths.go +++ b/server/gen/http/risk/server/paths.go @@ -42,6 +42,11 @@ func ListRiskResultsRiskPath() string { return "/rpc/risk.results.list" } +// ListRiskResultsForAgentRiskPath returns the URL path to the risk service listRiskResultsForAgent HTTP endpoint. +func ListRiskResultsForAgentRiskPath() string { + return "/rpc/risk.results.listForAgent" +} + // ListRiskResultsByChatRiskPath returns the URL path to the risk service listRiskResultsByChat HTTP endpoint. func ListRiskResultsByChatRiskPath() string { return "/rpc/risk.results.byChat" diff --git a/server/gen/http/risk/server/server.go b/server/gen/http/risk/server/server.go index bfda06859c..b9d8de6734 100644 --- a/server/gen/http/risk/server/server.go +++ b/server/gen/http/risk/server/server.go @@ -26,6 +26,7 @@ type Server struct { UpdateRiskPolicy http.Handler DeleteRiskPolicy http.Handler ListRiskResults http.Handler + ListRiskResultsForAgent http.Handler ListRiskResultsByChat http.Handler GetRiskOverview http.Handler ListRiskCategories http.Handler @@ -72,6 +73,7 @@ func New( {"UpdateRiskPolicy", "PUT", "/rpc/risk.policies.update"}, {"DeleteRiskPolicy", "DELETE", "/rpc/risk.policies.delete"}, {"ListRiskResults", "GET", "/rpc/risk.results.list"}, + {"ListRiskResultsForAgent", "GET", "/rpc/risk.results.listForAgent"}, {"ListRiskResultsByChat", "GET", "/rpc/risk.results.byChat"}, {"GetRiskOverview", "GET", "/rpc/risk.overview.get"}, {"ListRiskCategories", "GET", "/rpc/risk.categories"}, @@ -90,6 +92,7 @@ func New( UpdateRiskPolicy: NewUpdateRiskPolicyHandler(e.UpdateRiskPolicy, mux, decoder, encoder, errhandler, formatter), DeleteRiskPolicy: NewDeleteRiskPolicyHandler(e.DeleteRiskPolicy, mux, decoder, encoder, errhandler, formatter), ListRiskResults: NewListRiskResultsHandler(e.ListRiskResults, mux, decoder, encoder, errhandler, formatter), + ListRiskResultsForAgent: NewListRiskResultsForAgentHandler(e.ListRiskResultsForAgent, mux, decoder, encoder, errhandler, formatter), ListRiskResultsByChat: NewListRiskResultsByChatHandler(e.ListRiskResultsByChat, mux, decoder, encoder, errhandler, formatter), GetRiskOverview: NewGetRiskOverviewHandler(e.GetRiskOverview, mux, decoder, encoder, errhandler, formatter), ListRiskCategories: NewListRiskCategoriesHandler(e.ListRiskCategories, mux, decoder, encoder, errhandler, formatter), @@ -115,6 +118,7 @@ func (s *Server) Use(m func(http.Handler) http.Handler) { s.UpdateRiskPolicy = m(s.UpdateRiskPolicy) s.DeleteRiskPolicy = m(s.DeleteRiskPolicy) s.ListRiskResults = m(s.ListRiskResults) + s.ListRiskResultsForAgent = m(s.ListRiskResultsForAgent) s.ListRiskResultsByChat = m(s.ListRiskResultsByChat) s.GetRiskOverview = m(s.GetRiskOverview) s.ListRiskCategories = m(s.ListRiskCategories) @@ -139,6 +143,7 @@ func Mount(mux goahttp.Muxer, h *Server) { MountUpdateRiskPolicyHandler(mux, h.UpdateRiskPolicy) MountDeleteRiskPolicyHandler(mux, h.DeleteRiskPolicy) MountListRiskResultsHandler(mux, h.ListRiskResults) + MountListRiskResultsForAgentHandler(mux, h.ListRiskResultsForAgent) MountListRiskResultsByChatHandler(mux, h.ListRiskResultsByChat) MountGetRiskOverviewHandler(mux, h.GetRiskOverview) MountListRiskCategoriesHandler(mux, h.ListRiskCategories) @@ -527,6 +532,59 @@ func NewListRiskResultsHandler( }) } +// MountListRiskResultsForAgentHandler configures the mux to serve the "risk" +// service "listRiskResultsForAgent" endpoint. +func MountListRiskResultsForAgentHandler(mux goahttp.Muxer, h http.Handler) { + f, ok := h.(http.HandlerFunc) + if !ok { + f = func(w http.ResponseWriter, r *http.Request) { + h.ServeHTTP(w, r) + } + } + mux.Handle("GET", "/rpc/risk.results.listForAgent", f) +} + +// NewListRiskResultsForAgentHandler creates a HTTP handler which loads the +// HTTP request and calls the "risk" service "listRiskResultsForAgent" endpoint. +func NewListRiskResultsForAgentHandler( + endpoint goa.Endpoint, + mux goahttp.Muxer, + decoder func(*http.Request) goahttp.Decoder, + encoder func(context.Context, http.ResponseWriter) goahttp.Encoder, + errhandler func(context.Context, http.ResponseWriter, error), + formatter func(ctx context.Context, err error) goahttp.Statuser, +) http.Handler { + var ( + decodeRequest = DecodeListRiskResultsForAgentRequest(mux, decoder) + encodeResponse = EncodeListRiskResultsForAgentResponse(encoder) + encodeError = EncodeListRiskResultsForAgentError(encoder, formatter) + ) + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ctx := context.WithValue(r.Context(), goahttp.AcceptTypeKey, r.Header.Get("Accept")) + ctx = context.WithValue(ctx, goa.MethodKey, "listRiskResultsForAgent") + ctx = context.WithValue(ctx, goa.ServiceKey, "risk") + payload, err := decodeRequest(r) + if err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { + errhandler(ctx, w, err) + } + return + } + res, err := endpoint(ctx, payload) + if err != nil { + if err := encodeError(ctx, w, err); err != nil && errhandler != nil { + errhandler(ctx, w, err) + } + return + } + if err := encodeResponse(ctx, w, res); err != nil { + if errhandler != nil { + errhandler(ctx, w, err) + } + } + }) +} + // MountListRiskResultsByChatHandler configures the mux to serve the "risk" // service "listRiskResultsByChat" endpoint. func MountListRiskResultsByChatHandler(mux goahttp.Muxer, h http.Handler) { diff --git a/server/gen/http/risk/server/types.go b/server/gen/http/risk/server/types.go index e09ee716b1..1ed2fe4862 100644 --- a/server/gen/http/risk/server/types.go +++ b/server/gen/http/risk/server/types.go @@ -222,6 +222,17 @@ type ListRiskResultsResponseBody struct { NextCursor *string `form:"next_cursor,omitempty" json:"next_cursor,omitempty" xml:"next_cursor,omitempty"` } +// ListRiskResultsForAgentResponseBody is the type of the "risk" service +// "listRiskResultsForAgent" endpoint HTTP response body. +type ListRiskResultsForAgentResponseBody struct { + // The list of risk results with match content redacted to opaque fingerprints. + Results []*RiskResultRedactedResponseBody `form:"results" json:"results" xml:"results"` + // Total number of findings across all enabled policies. + TotalCount int64 `form:"total_count" json:"total_count" xml:"total_count"` + // Cursor for the next page of results. + NextCursor *string `form:"next_cursor,omitempty" json:"next_cursor,omitempty" xml:"next_cursor,omitempty"` +} + // ListRiskResultsByChatResponseBody is the type of the "risk" service // "listRiskResultsByChat" endpoint HTTP response body. type ListRiskResultsByChatResponseBody struct { @@ -1616,6 +1627,196 @@ type ListRiskResultsGatewayErrorResponseBody struct { Fault bool `form:"fault" json:"fault" xml:"fault"` } +// ListRiskResultsForAgentUnauthorizedResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "unauthorized" error. +type ListRiskResultsForAgentUnauthorizedResponseBody struct { + // Name is the name of this class of errors. + Name string `form:"name" json:"name" xml:"name"` + // ID is a unique identifier for this particular occurrence of the problem. + ID string `form:"id" json:"id" xml:"id"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message string `form:"message" json:"message" xml:"message"` + // Is the error temporary? + Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` + // Is the error a timeout? + Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` + // Is the error a server-side fault? + Fault bool `form:"fault" json:"fault" xml:"fault"` +} + +// ListRiskResultsForAgentForbiddenResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "forbidden" error. +type ListRiskResultsForAgentForbiddenResponseBody struct { + // Name is the name of this class of errors. + Name string `form:"name" json:"name" xml:"name"` + // ID is a unique identifier for this particular occurrence of the problem. + ID string `form:"id" json:"id" xml:"id"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message string `form:"message" json:"message" xml:"message"` + // Is the error temporary? + Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` + // Is the error a timeout? + Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` + // Is the error a server-side fault? + Fault bool `form:"fault" json:"fault" xml:"fault"` +} + +// ListRiskResultsForAgentBadRequestResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "bad_request" error. +type ListRiskResultsForAgentBadRequestResponseBody struct { + // Name is the name of this class of errors. + Name string `form:"name" json:"name" xml:"name"` + // ID is a unique identifier for this particular occurrence of the problem. + ID string `form:"id" json:"id" xml:"id"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message string `form:"message" json:"message" xml:"message"` + // Is the error temporary? + Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` + // Is the error a timeout? + Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` + // Is the error a server-side fault? + Fault bool `form:"fault" json:"fault" xml:"fault"` +} + +// ListRiskResultsForAgentNotFoundResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "not_found" error. +type ListRiskResultsForAgentNotFoundResponseBody struct { + // Name is the name of this class of errors. + Name string `form:"name" json:"name" xml:"name"` + // ID is a unique identifier for this particular occurrence of the problem. + ID string `form:"id" json:"id" xml:"id"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message string `form:"message" json:"message" xml:"message"` + // Is the error temporary? + Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` + // Is the error a timeout? + Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` + // Is the error a server-side fault? + Fault bool `form:"fault" json:"fault" xml:"fault"` +} + +// ListRiskResultsForAgentConflictResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "conflict" error. +type ListRiskResultsForAgentConflictResponseBody struct { + // Name is the name of this class of errors. + Name string `form:"name" json:"name" xml:"name"` + // ID is a unique identifier for this particular occurrence of the problem. + ID string `form:"id" json:"id" xml:"id"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message string `form:"message" json:"message" xml:"message"` + // Is the error temporary? + Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` + // Is the error a timeout? + Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` + // Is the error a server-side fault? + Fault bool `form:"fault" json:"fault" xml:"fault"` +} + +// ListRiskResultsForAgentUnsupportedMediaResponseBody is the type of the +// "risk" service "listRiskResultsForAgent" endpoint HTTP response body for the +// "unsupported_media" error. +type ListRiskResultsForAgentUnsupportedMediaResponseBody struct { + // Name is the name of this class of errors. + Name string `form:"name" json:"name" xml:"name"` + // ID is a unique identifier for this particular occurrence of the problem. + ID string `form:"id" json:"id" xml:"id"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message string `form:"message" json:"message" xml:"message"` + // Is the error temporary? + Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` + // Is the error a timeout? + Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` + // Is the error a server-side fault? + Fault bool `form:"fault" json:"fault" xml:"fault"` +} + +// ListRiskResultsForAgentInvalidResponseBody is the type of the "risk" service +// "listRiskResultsForAgent" endpoint HTTP response body for the "invalid" +// error. +type ListRiskResultsForAgentInvalidResponseBody struct { + // Name is the name of this class of errors. + Name string `form:"name" json:"name" xml:"name"` + // ID is a unique identifier for this particular occurrence of the problem. + ID string `form:"id" json:"id" xml:"id"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message string `form:"message" json:"message" xml:"message"` + // Is the error temporary? + Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` + // Is the error a timeout? + Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` + // Is the error a server-side fault? + Fault bool `form:"fault" json:"fault" xml:"fault"` +} + +// ListRiskResultsForAgentInvariantViolationResponseBody is the type of the +// "risk" service "listRiskResultsForAgent" endpoint HTTP response body for the +// "invariant_violation" error. +type ListRiskResultsForAgentInvariantViolationResponseBody struct { + // Name is the name of this class of errors. + Name string `form:"name" json:"name" xml:"name"` + // ID is a unique identifier for this particular occurrence of the problem. + ID string `form:"id" json:"id" xml:"id"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message string `form:"message" json:"message" xml:"message"` + // Is the error temporary? + Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` + // Is the error a timeout? + Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` + // Is the error a server-side fault? + Fault bool `form:"fault" json:"fault" xml:"fault"` +} + +// ListRiskResultsForAgentUnexpectedResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "unexpected" error. +type ListRiskResultsForAgentUnexpectedResponseBody struct { + // Name is the name of this class of errors. + Name string `form:"name" json:"name" xml:"name"` + // ID is a unique identifier for this particular occurrence of the problem. + ID string `form:"id" json:"id" xml:"id"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message string `form:"message" json:"message" xml:"message"` + // Is the error temporary? + Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` + // Is the error a timeout? + Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` + // Is the error a server-side fault? + Fault bool `form:"fault" json:"fault" xml:"fault"` +} + +// ListRiskResultsForAgentGatewayErrorResponseBody is the type of the "risk" +// service "listRiskResultsForAgent" endpoint HTTP response body for the +// "gateway_error" error. +type ListRiskResultsForAgentGatewayErrorResponseBody struct { + // Name is the name of this class of errors. + Name string `form:"name" json:"name" xml:"name"` + // ID is a unique identifier for this particular occurrence of the problem. + ID string `form:"id" json:"id" xml:"id"` + // Message is a human-readable explanation specific to this occurrence of the + // problem. + Message string `form:"message" json:"message" xml:"message"` + // Is the error temporary? + Temporary bool `form:"temporary" json:"temporary" xml:"temporary"` + // Is the error a timeout? + Timeout bool `form:"timeout" json:"timeout" xml:"timeout"` + // Is the error a server-side fault? + Fault bool `form:"fault" json:"fault" xml:"fault"` +} + // ListRiskResultsByChatUnauthorizedResponseBody is the type of the "risk" // service "listRiskResultsByChat" endpoint HTTP response body for the // "unauthorized" error. @@ -3546,6 +3747,47 @@ type RiskResultResponseBody struct { CreatedAt string `form:"created_at" json:"created_at" xml:"created_at"` } +// RiskResultRedactedResponseBody is used to define fields on response body +// types. +type RiskResultRedactedResponseBody struct { + // The result ID. + ID string `form:"id" json:"id" xml:"id"` + // The risk policy ID. + PolicyID string `form:"policy_id" json:"policy_id" xml:"policy_id"` + // Policy version when this result was produced. + PolicyVersion int64 `form:"policy_version" json:"policy_version" xml:"policy_version"` + // The chat message that was scanned. + ChatMessageID string `form:"chat_message_id" json:"chat_message_id" xml:"chat_message_id"` + // The chat session containing the message. + ChatID *string `form:"chat_id,omitempty" json:"chat_id,omitempty" xml:"chat_id,omitempty"` + // Title of the chat session. + ChatTitle *string `form:"chat_title,omitempty" json:"chat_title,omitempty" xml:"chat_title,omitempty"` + // The user who owns the chat session. + UserID *string `form:"user_id,omitempty" json:"user_id,omitempty" xml:"user_id,omitempty"` + // Detection source (e.g. gitleaks, presidio, shadow_mcp). + Source string `form:"source" json:"source" xml:"source"` + // The matched rule identifier. + RuleID *string `form:"rule_id,omitempty" json:"rule_id,omitempty" xml:"rule_id,omitempty"` + // Human-readable description of the finding. + Description *string `form:"description,omitempty" json:"description,omitempty" xml:"description,omitempty"` + // Opaque fingerprint of the original match in the form `` where N is the byte length of the original match and XXXXXXXX + // is the first 8 hex characters of sha256(match). For shadow_mcp findings the + // original match value (a non-sensitive server URL or command identifier) is + // passed through verbatim. + MatchRedacted string `form:"match_redacted" json:"match_redacted" xml:"match_redacted"` + // Whether the original finding carried byte-position information within the + // source message. Exact positions are intentionally not exposed to avoid + // reconstruction attacks. + PositionKnown bool `form:"position_known" json:"position_known" xml:"position_known"` + // Confidence score for this finding. + Confidence *float64 `form:"confidence,omitempty" json:"confidence,omitempty" xml:"confidence,omitempty"` + // Tags from the detection rule. + Tags []string `form:"tags,omitempty" json:"tags,omitempty" xml:"tags,omitempty"` + // When this result was created. + CreatedAt string `form:"created_at" json:"created_at" xml:"created_at"` +} + // RiskChatSummaryResponseBody is used to define fields on response body types. type RiskChatSummaryResponseBody struct { // The chat session ID. @@ -3813,6 +4055,28 @@ func NewListRiskResultsResponseBody(res *risk.ListRiskResultsResult) *ListRiskRe return body } +// NewListRiskResultsForAgentResponseBody builds the HTTP response body from +// the result of the "listRiskResultsForAgent" endpoint of the "risk" service. +func NewListRiskResultsForAgentResponseBody(res *risk.ListRiskResultsForAgentResult) *ListRiskResultsForAgentResponseBody { + body := &ListRiskResultsForAgentResponseBody{ + TotalCount: res.TotalCount, + NextCursor: res.NextCursor, + } + if res.Results != nil { + body.Results = make([]*RiskResultRedactedResponseBody, len(res.Results)) + for i, val := range res.Results { + if val == nil { + body.Results[i] = nil + continue + } + body.Results[i] = marshalTypesRiskResultRedactedToRiskResultRedactedResponseBody(val) + } + } else { + body.Results = []*RiskResultRedactedResponseBody{} + } + return body +} + // NewListRiskResultsByChatResponseBody builds the HTTP response body from the // result of the "listRiskResultsByChat" endpoint of the "risk" service. func NewListRiskResultsByChatResponseBody(res *risk.ListRiskResultsByChatResult) *ListRiskResultsByChatResponseBody { @@ -5012,6 +5276,156 @@ func NewListRiskResultsGatewayErrorResponseBody(res *goa.ServiceError) *ListRisk return body } +// NewListRiskResultsForAgentUnauthorizedResponseBody builds the HTTP response +// body from the result of the "listRiskResultsForAgent" endpoint of the "risk" +// service. +func NewListRiskResultsForAgentUnauthorizedResponseBody(res *goa.ServiceError) *ListRiskResultsForAgentUnauthorizedResponseBody { + body := &ListRiskResultsForAgentUnauthorizedResponseBody{ + Name: res.Name, + ID: res.ID, + Message: res.Message, + Temporary: res.Temporary, + Timeout: res.Timeout, + Fault: res.Fault, + } + return body +} + +// NewListRiskResultsForAgentForbiddenResponseBody builds the HTTP response +// body from the result of the "listRiskResultsForAgent" endpoint of the "risk" +// service. +func NewListRiskResultsForAgentForbiddenResponseBody(res *goa.ServiceError) *ListRiskResultsForAgentForbiddenResponseBody { + body := &ListRiskResultsForAgentForbiddenResponseBody{ + Name: res.Name, + ID: res.ID, + Message: res.Message, + Temporary: res.Temporary, + Timeout: res.Timeout, + Fault: res.Fault, + } + return body +} + +// NewListRiskResultsForAgentBadRequestResponseBody builds the HTTP response +// body from the result of the "listRiskResultsForAgent" endpoint of the "risk" +// service. +func NewListRiskResultsForAgentBadRequestResponseBody(res *goa.ServiceError) *ListRiskResultsForAgentBadRequestResponseBody { + body := &ListRiskResultsForAgentBadRequestResponseBody{ + Name: res.Name, + ID: res.ID, + Message: res.Message, + Temporary: res.Temporary, + Timeout: res.Timeout, + Fault: res.Fault, + } + return body +} + +// NewListRiskResultsForAgentNotFoundResponseBody builds the HTTP response body +// from the result of the "listRiskResultsForAgent" endpoint of the "risk" +// service. +func NewListRiskResultsForAgentNotFoundResponseBody(res *goa.ServiceError) *ListRiskResultsForAgentNotFoundResponseBody { + body := &ListRiskResultsForAgentNotFoundResponseBody{ + Name: res.Name, + ID: res.ID, + Message: res.Message, + Temporary: res.Temporary, + Timeout: res.Timeout, + Fault: res.Fault, + } + return body +} + +// NewListRiskResultsForAgentConflictResponseBody builds the HTTP response body +// from the result of the "listRiskResultsForAgent" endpoint of the "risk" +// service. +func NewListRiskResultsForAgentConflictResponseBody(res *goa.ServiceError) *ListRiskResultsForAgentConflictResponseBody { + body := &ListRiskResultsForAgentConflictResponseBody{ + Name: res.Name, + ID: res.ID, + Message: res.Message, + Temporary: res.Temporary, + Timeout: res.Timeout, + Fault: res.Fault, + } + return body +} + +// NewListRiskResultsForAgentUnsupportedMediaResponseBody builds the HTTP +// response body from the result of the "listRiskResultsForAgent" endpoint of +// the "risk" service. +func NewListRiskResultsForAgentUnsupportedMediaResponseBody(res *goa.ServiceError) *ListRiskResultsForAgentUnsupportedMediaResponseBody { + body := &ListRiskResultsForAgentUnsupportedMediaResponseBody{ + Name: res.Name, + ID: res.ID, + Message: res.Message, + Temporary: res.Temporary, + Timeout: res.Timeout, + Fault: res.Fault, + } + return body +} + +// NewListRiskResultsForAgentInvalidResponseBody builds the HTTP response body +// from the result of the "listRiskResultsForAgent" endpoint of the "risk" +// service. +func NewListRiskResultsForAgentInvalidResponseBody(res *goa.ServiceError) *ListRiskResultsForAgentInvalidResponseBody { + body := &ListRiskResultsForAgentInvalidResponseBody{ + Name: res.Name, + ID: res.ID, + Message: res.Message, + Temporary: res.Temporary, + Timeout: res.Timeout, + Fault: res.Fault, + } + return body +} + +// NewListRiskResultsForAgentInvariantViolationResponseBody builds the HTTP +// response body from the result of the "listRiskResultsForAgent" endpoint of +// the "risk" service. +func NewListRiskResultsForAgentInvariantViolationResponseBody(res *goa.ServiceError) *ListRiskResultsForAgentInvariantViolationResponseBody { + body := &ListRiskResultsForAgentInvariantViolationResponseBody{ + Name: res.Name, + ID: res.ID, + Message: res.Message, + Temporary: res.Temporary, + Timeout: res.Timeout, + Fault: res.Fault, + } + return body +} + +// NewListRiskResultsForAgentUnexpectedResponseBody builds the HTTP response +// body from the result of the "listRiskResultsForAgent" endpoint of the "risk" +// service. +func NewListRiskResultsForAgentUnexpectedResponseBody(res *goa.ServiceError) *ListRiskResultsForAgentUnexpectedResponseBody { + body := &ListRiskResultsForAgentUnexpectedResponseBody{ + Name: res.Name, + ID: res.ID, + Message: res.Message, + Temporary: res.Temporary, + Timeout: res.Timeout, + Fault: res.Fault, + } + return body +} + +// NewListRiskResultsForAgentGatewayErrorResponseBody builds the HTTP response +// body from the result of the "listRiskResultsForAgent" endpoint of the "risk" +// service. +func NewListRiskResultsForAgentGatewayErrorResponseBody(res *goa.ServiceError) *ListRiskResultsForAgentGatewayErrorResponseBody { + body := &ListRiskResultsForAgentGatewayErrorResponseBody{ + Name: res.Name, + ID: res.ID, + Message: res.Message, + Temporary: res.Temporary, + Timeout: res.Timeout, + Fault: res.Fault, + } + return body +} + // NewListRiskResultsByChatUnauthorizedResponseBody builds the HTTP response // body from the result of the "listRiskResultsByChat" endpoint of the "risk" // service. @@ -6599,6 +7013,21 @@ func NewListRiskResultsPayload(policyID *string, chatID *string, category *strin return v } +// NewListRiskResultsForAgentPayload builds a risk service +// listRiskResultsForAgent endpoint payload. +func NewListRiskResultsForAgentPayload(policyID *string, chatID *string, cursor *string, limit *int, apikeyToken *string, sessionToken *string, projectSlugInput *string) *risk.ListRiskResultsForAgentPayload { + v := &risk.ListRiskResultsForAgentPayload{} + v.PolicyID = policyID + v.ChatID = chatID + v.Cursor = cursor + v.Limit = limit + v.ApikeyToken = apikeyToken + v.SessionToken = sessionToken + v.ProjectSlugInput = projectSlugInput + + return v +} + // NewListRiskResultsByChatPayload builds a risk service listRiskResultsByChat // endpoint payload. func NewListRiskResultsByChatPayload(cursor *string, limit *int, apikeyToken *string, sessionToken *string, projectSlugInput *string) *risk.ListRiskResultsByChatPayload { diff --git a/server/gen/risk/client.go b/server/gen/risk/client.go index 8a27b7d11f..b2949f3656 100644 --- a/server/gen/risk/client.go +++ b/server/gen/risk/client.go @@ -23,11 +23,8 @@ type Client struct { UpdateRiskPolicyEndpoint goa.Endpoint DeleteRiskPolicyEndpoint goa.Endpoint ListRiskResultsEndpoint goa.Endpoint + ListRiskResultsForAgentEndpoint goa.Endpoint ListRiskResultsByChatEndpoint goa.Endpoint - GetRiskOverviewEndpoint goa.Endpoint - ListRiskCategoriesEndpoint goa.Endpoint - GetRiskUserBreakdownEndpoint goa.Endpoint - GetRiskRuleBreakdownEndpoint goa.Endpoint GetRiskPolicyStatusEndpoint goa.Endpoint ListShadowMCPApprovalsEndpoint goa.Endpoint ApproveShadowMCPEndpoint goa.Endpoint @@ -36,7 +33,7 @@ type Client struct { } // NewClient initializes a "risk" service client given the endpoints. -func NewClient(createRiskPolicy, listRiskPolicies, getRiskCapabilities, getRiskPolicy, updateRiskPolicy, deleteRiskPolicy, listRiskResults, listRiskResultsByChat, getRiskOverview, listRiskCategories, getRiskUserBreakdown, getRiskRuleBreakdown, getRiskPolicyStatus, listShadowMCPApprovals, approveShadowMCP, revokeShadowMCPApproval, triggerRiskAnalysis goa.Endpoint) *Client { +func NewClient(createRiskPolicy, listRiskPolicies, getRiskCapabilities, getRiskPolicy, updateRiskPolicy, deleteRiskPolicy, listRiskResults, listRiskResultsForAgent, listRiskResultsByChat, getRiskPolicyStatus, listShadowMCPApprovals, approveShadowMCP, revokeShadowMCPApproval, triggerRiskAnalysis goa.Endpoint) *Client { return &Client{ CreateRiskPolicyEndpoint: createRiskPolicy, ListRiskPoliciesEndpoint: listRiskPolicies, @@ -45,11 +42,8 @@ func NewClient(createRiskPolicy, listRiskPolicies, getRiskCapabilities, getRiskP UpdateRiskPolicyEndpoint: updateRiskPolicy, DeleteRiskPolicyEndpoint: deleteRiskPolicy, ListRiskResultsEndpoint: listRiskResults, + ListRiskResultsForAgentEndpoint: listRiskResultsForAgent, ListRiskResultsByChatEndpoint: listRiskResultsByChat, - GetRiskOverviewEndpoint: getRiskOverview, - ListRiskCategoriesEndpoint: listRiskCategories, - GetRiskUserBreakdownEndpoint: getRiskUserBreakdown, - GetRiskRuleBreakdownEndpoint: getRiskRuleBreakdown, GetRiskPolicyStatusEndpoint: getRiskPolicyStatus, ListShadowMCPApprovalsEndpoint: listShadowMCPApprovals, ApproveShadowMCPEndpoint: approveShadowMCP, @@ -209,9 +203,9 @@ func (c *Client) ListRiskResults(ctx context.Context, p *ListRiskResultsPayload) return ires.(*ListRiskResultsResult), nil } -// ListRiskResultsByChat calls the "listRiskResultsByChat" endpoint of the +// ListRiskResultsForAgent calls the "listRiskResultsForAgent" endpoint of the // "risk" service. -// ListRiskResultsByChat may return the following errors: +// ListRiskResultsForAgent may return the following errors: // - "unauthorized" (type *goa.ServiceError): unauthorized access // - "forbidden" (type *goa.ServiceError): permission denied // - "bad_request" (type *goa.ServiceError): request is invalid @@ -223,86 +217,18 @@ func (c *Client) ListRiskResults(ctx context.Context, p *ListRiskResultsPayload) // - "unexpected" (type *goa.ServiceError): an unexpected error occurred // - "gateway_error" (type *goa.ServiceError): an unexpected error occurred // - error: internal error -func (c *Client) ListRiskResultsByChat(ctx context.Context, p *ListRiskResultsByChatPayload) (res *ListRiskResultsByChatResult, err error) { +func (c *Client) ListRiskResultsForAgent(ctx context.Context, p *ListRiskResultsForAgentPayload) (res *ListRiskResultsForAgentResult, err error) { var ires any - ires, err = c.ListRiskResultsByChatEndpoint(ctx, p) + ires, err = c.ListRiskResultsForAgentEndpoint(ctx, p) if err != nil { return } - return ires.(*ListRiskResultsByChatResult), nil + return ires.(*ListRiskResultsForAgentResult), nil } -// GetRiskOverview calls the "getRiskOverview" endpoint of the "risk" service. -// GetRiskOverview may return the following errors: -// - "unauthorized" (type *goa.ServiceError): unauthorized access -// - "forbidden" (type *goa.ServiceError): permission denied -// - "bad_request" (type *goa.ServiceError): request is invalid -// - "not_found" (type *goa.ServiceError): resource not found -// - "conflict" (type *goa.ServiceError): resource already exists -// - "unsupported_media" (type *goa.ServiceError): unsupported media type -// - "invalid" (type *goa.ServiceError): request contains one or more invalidation fields -// - "invariant_violation" (type *goa.ServiceError): an unexpected error occurred -// - "unexpected" (type *goa.ServiceError): an unexpected error occurred -// - "gateway_error" (type *goa.ServiceError): an unexpected error occurred -// - error: internal error -func (c *Client) GetRiskOverview(ctx context.Context, p *GetRiskOverviewPayload) (res *RiskOverviewResult, err error) { - var ires any - ires, err = c.GetRiskOverviewEndpoint(ctx, p) - if err != nil { - return - } - return ires.(*RiskOverviewResult), nil -} - -// ListRiskCategories calls the "listRiskCategories" endpoint of the "risk" -// service. -// ListRiskCategories may return the following errors: -// - "unauthorized" (type *goa.ServiceError): unauthorized access -// - "forbidden" (type *goa.ServiceError): permission denied -// - "bad_request" (type *goa.ServiceError): request is invalid -// - "not_found" (type *goa.ServiceError): resource not found -// - "conflict" (type *goa.ServiceError): resource already exists -// - "unsupported_media" (type *goa.ServiceError): unsupported media type -// - "invalid" (type *goa.ServiceError): request contains one or more invalidation fields -// - "invariant_violation" (type *goa.ServiceError): an unexpected error occurred -// - "unexpected" (type *goa.ServiceError): an unexpected error occurred -// - "gateway_error" (type *goa.ServiceError): an unexpected error occurred -// - error: internal error -func (c *Client) ListRiskCategories(ctx context.Context, p *ListRiskCategoriesPayload) (res *RiskCategoriesResult, err error) { - var ires any - ires, err = c.ListRiskCategoriesEndpoint(ctx, p) - if err != nil { - return - } - return ires.(*RiskCategoriesResult), nil -} - -// GetRiskUserBreakdown calls the "getRiskUserBreakdown" endpoint of the "risk" -// service. -// GetRiskUserBreakdown may return the following errors: -// - "unauthorized" (type *goa.ServiceError): unauthorized access -// - "forbidden" (type *goa.ServiceError): permission denied -// - "bad_request" (type *goa.ServiceError): request is invalid -// - "not_found" (type *goa.ServiceError): resource not found -// - "conflict" (type *goa.ServiceError): resource already exists -// - "unsupported_media" (type *goa.ServiceError): unsupported media type -// - "invalid" (type *goa.ServiceError): request contains one or more invalidation fields -// - "invariant_violation" (type *goa.ServiceError): an unexpected error occurred -// - "unexpected" (type *goa.ServiceError): an unexpected error occurred -// - "gateway_error" (type *goa.ServiceError): an unexpected error occurred -// - error: internal error -func (c *Client) GetRiskUserBreakdown(ctx context.Context, p *GetRiskUserBreakdownPayload) (res *RiskUserBreakdownResult, err error) { - var ires any - ires, err = c.GetRiskUserBreakdownEndpoint(ctx, p) - if err != nil { - return - } - return ires.(*RiskUserBreakdownResult), nil -} - -// GetRiskRuleBreakdown calls the "getRiskRuleBreakdown" endpoint of the "risk" -// service. -// GetRiskRuleBreakdown may return the following errors: +// ListRiskResultsByChat calls the "listRiskResultsByChat" endpoint of the +// "risk" service. +// ListRiskResultsByChat may return the following errors: // - "unauthorized" (type *goa.ServiceError): unauthorized access // - "forbidden" (type *goa.ServiceError): permission denied // - "bad_request" (type *goa.ServiceError): request is invalid @@ -314,13 +240,13 @@ func (c *Client) GetRiskUserBreakdown(ctx context.Context, p *GetRiskUserBreakdo // - "unexpected" (type *goa.ServiceError): an unexpected error occurred // - "gateway_error" (type *goa.ServiceError): an unexpected error occurred // - error: internal error -func (c *Client) GetRiskRuleBreakdown(ctx context.Context, p *GetRiskRuleBreakdownPayload) (res *RiskRuleBreakdownResult, err error) { +func (c *Client) ListRiskResultsByChat(ctx context.Context, p *ListRiskResultsByChatPayload) (res *ListRiskResultsByChatResult, err error) { var ires any - ires, err = c.GetRiskRuleBreakdownEndpoint(ctx, p) + ires, err = c.ListRiskResultsByChatEndpoint(ctx, p) if err != nil { return } - return ires.(*RiskRuleBreakdownResult), nil + return ires.(*ListRiskResultsByChatResult), nil } // GetRiskPolicyStatus calls the "getRiskPolicyStatus" endpoint of the "risk" diff --git a/server/gen/risk/endpoints.go b/server/gen/risk/endpoints.go index 7178969af2..e2d6e134c1 100644 --- a/server/gen/risk/endpoints.go +++ b/server/gen/risk/endpoints.go @@ -23,6 +23,7 @@ type Endpoints struct { UpdateRiskPolicy goa.Endpoint DeleteRiskPolicy goa.Endpoint ListRiskResults goa.Endpoint + ListRiskResultsForAgent goa.Endpoint ListRiskResultsByChat goa.Endpoint GetRiskOverview goa.Endpoint ListRiskCategories goa.Endpoint @@ -47,6 +48,7 @@ func NewEndpoints(s Service) *Endpoints { UpdateRiskPolicy: NewUpdateRiskPolicyEndpoint(s, a.APIKeyAuth), DeleteRiskPolicy: NewDeleteRiskPolicyEndpoint(s, a.APIKeyAuth), ListRiskResults: NewListRiskResultsEndpoint(s, a.APIKeyAuth), + ListRiskResultsForAgent: NewListRiskResultsForAgentEndpoint(s, a.APIKeyAuth), ListRiskResultsByChat: NewListRiskResultsByChatEndpoint(s, a.APIKeyAuth), GetRiskOverview: NewGetRiskOverviewEndpoint(s, a.APIKeyAuth), ListRiskCategories: NewListRiskCategoriesEndpoint(s, a.APIKeyAuth), @@ -69,6 +71,7 @@ func (e *Endpoints) Use(m func(goa.Endpoint) goa.Endpoint) { e.UpdateRiskPolicy = m(e.UpdateRiskPolicy) e.DeleteRiskPolicy = m(e.DeleteRiskPolicy) e.ListRiskResults = m(e.ListRiskResults) + e.ListRiskResultsForAgent = m(e.ListRiskResultsForAgent) e.ListRiskResultsByChat = m(e.ListRiskResultsByChat) e.GetRiskOverview = m(e.GetRiskOverview) e.ListRiskCategories = m(e.ListRiskCategories) @@ -494,6 +497,65 @@ func NewListRiskResultsEndpoint(s Service, authAPIKeyFn security.AuthAPIKeyFunc) } } +// NewListRiskResultsForAgentEndpoint returns an endpoint function that calls +// the method "listRiskResultsForAgent" of service "risk". +func NewListRiskResultsForAgentEndpoint(s Service, authAPIKeyFn security.AuthAPIKeyFunc) goa.Endpoint { + return func(ctx context.Context, req any) (any, error) { + p := req.(*ListRiskResultsForAgentPayload) + var err error + sc := security.APIKeyScheme{ + Name: "apikey", + Scopes: []string{"consumer", "producer", "chat", "hooks"}, + RequiredScopes: []string{"producer"}, + } + var key string + if p.ApikeyToken != nil { + key = *p.ApikeyToken + } + ctx, err = authAPIKeyFn(ctx, key, &sc) + if err == nil { + sc := security.APIKeyScheme{ + Name: "project_slug", + Scopes: []string{}, + RequiredScopes: []string{"producer"}, + } + var key string + if p.ProjectSlugInput != nil { + key = *p.ProjectSlugInput + } + ctx, err = authAPIKeyFn(ctx, key, &sc) + } + if err != nil { + sc := security.APIKeyScheme{ + Name: "session", + Scopes: []string{}, + RequiredScopes: []string{}, + } + var key string + if p.SessionToken != nil { + key = *p.SessionToken + } + ctx, err = authAPIKeyFn(ctx, key, &sc) + if err == nil { + sc := security.APIKeyScheme{ + Name: "project_slug", + Scopes: []string{}, + RequiredScopes: []string{}, + } + var key string + if p.ProjectSlugInput != nil { + key = *p.ProjectSlugInput + } + ctx, err = authAPIKeyFn(ctx, key, &sc) + } + } + if err != nil { + return nil, err + } + return s.ListRiskResultsForAgent(ctx, p) + } +} + // NewListRiskResultsByChatEndpoint returns an endpoint function that calls the // method "listRiskResultsByChat" of service "risk". func NewListRiskResultsByChatEndpoint(s Service, authAPIKeyFn security.AuthAPIKeyFunc) goa.Endpoint { diff --git a/server/gen/risk/service.go b/server/gen/risk/service.go index d93c55bb8e..3d56fbb4aa 100644 --- a/server/gen/risk/service.go +++ b/server/gen/risk/service.go @@ -31,21 +31,16 @@ type Service interface { DeleteRiskPolicy(context.Context, *DeleteRiskPolicyPayload) (err error) // List risk analysis results for the current project. ListRiskResults(context.Context, *ListRiskResultsPayload) (res *ListRiskResultsResult, err error) + // List risk analysis results with the `match` field redacted to an opaque + // length+sha256-prefix fingerprint. Matches the payload and pagination + // semantics of listRiskResults. Designed for AI assistant / MCP consumption so + // secret content (gitleaks captures, presidio entities, prompt-injection + // payloads) never reaches the model context. For shadow_mcp findings the + // `match` value — a non-sensitive server URL or command identifier — is passed + // through verbatim. + ListRiskResultsForAgent(context.Context, *ListRiskResultsForAgentPayload) (res *ListRiskResultsForAgentResult, err error) // List risk results grouped by chat session for the current project. ListRiskResultsByChat(context.Context, *ListRiskResultsByChatPayload) (res *ListRiskResultsByChatResult, err error) - // Get risk overview metrics and trend data for the current project. - GetRiskOverview(context.Context, *GetRiskOverviewPayload) (res *RiskOverviewResult, err error) - // Return the canonical risk category definitions: metadata - // (label/description/icon) plus the classification (source / rule_id list / - // rule_id prefix) used to bucket findings. Dashboards and CLIs should call - // this instead of maintaining their own copy of the mapping. - ListRiskCategories(context.Context, *ListRiskCategoriesPayload) (res *RiskCategoriesResult, err error) - // Per-user breakdowns of findings by category and by rule_id within a time - // window. Powers the user drill-down on /risk-overview. - GetRiskUserBreakdown(context.Context, *GetRiskUserBreakdownPayload) (res *RiskUserBreakdownResult, err error) - // Get per-rule_id finding counts for a category within a time window. Powers - // the per-category drill-down chart on /risk-overview. - GetRiskRuleBreakdown(context.Context, *GetRiskRuleBreakdownPayload) (res *RiskRuleBreakdownResult, err error) // Get the analysis status of a risk policy including progress and workflow // state. GetRiskPolicyStatus(context.Context, *GetRiskPolicyStatusPayload) (res *types.RiskPolicyStatus, err error) @@ -85,7 +80,7 @@ const ServiceName = "risk" // MethodNames lists the service method names as defined in the design. These // are the same values that are set in the endpoint request contexts under the // MethodKey key. -var MethodNames = [17]string{"createRiskPolicy", "listRiskPolicies", "getRiskCapabilities", "getRiskPolicy", "updateRiskPolicy", "deleteRiskPolicy", "listRiskResults", "listRiskResultsByChat", "getRiskOverview", "listRiskCategories", "getRiskUserBreakdown", "getRiskRuleBreakdown", "getRiskPolicyStatus", "listShadowMCPApprovals", "approveShadowMCP", "revokeShadowMCPApproval", "triggerRiskAnalysis"} +var MethodNames = [14]string{"createRiskPolicy", "listRiskPolicies", "getRiskCapabilities", "getRiskPolicy", "updateRiskPolicy", "deleteRiskPolicy", "listRiskResults", "listRiskResultsForAgent", "listRiskResultsByChat", "getRiskPolicyStatus", "listShadowMCPApprovals", "approveShadowMCP", "revokeShadowMCPApproval", "triggerRiskAnalysis"} // ApproveShadowMCPPayload is the payload type of the risk service // approveShadowMCP method. @@ -145,19 +140,6 @@ type GetRiskCapabilitiesPayload struct { ProjectSlugInput *string } -// GetRiskOverviewPayload is the payload type of the risk service -// getRiskOverview method. -type GetRiskOverviewPayload struct { - ApikeyToken *string - SessionToken *string - ProjectSlugInput *string - // Inclusive start of the overview window. Defaults to the start of the 7-day - // calendar window ending at to. - From *string - // Exclusive end of the overview window. Defaults to now. - To *string -} - // GetRiskPolicyPayload is the payload type of the risk service getRiskPolicy // method. type GetRiskPolicyPayload struct { @@ -178,44 +160,6 @@ type GetRiskPolicyStatusPayload struct { ID string } -// GetRiskRuleBreakdownPayload is the payload type of the risk service -// getRiskRuleBreakdown method. -type GetRiskRuleBreakdownPayload struct { - ApikeyToken *string - SessionToken *string - ProjectSlugInput *string - // Required category key to break down by rule_id (e.g. secrets, pii). - Category string - // Inclusive start of the window. Defaults to the same 7-day window as the - // overview. - From *string - // Exclusive end of the window. Defaults to now. - To *string -} - -// GetRiskUserBreakdownPayload is the payload type of the risk service -// getRiskUserBreakdown method. -type GetRiskUserBreakdownPayload struct { - ApikeyToken *string - SessionToken *string - ProjectSlugInput *string - // External user identifier to scope the breakdown to. - ExternalUserID string - // Inclusive start of the window. Defaults to the same 7-day window as the - // overview. - From *string - // Exclusive end of the window. Defaults to now. - To *string -} - -// ListRiskCategoriesPayload is the payload type of the risk service -// listRiskCategories method. -type ListRiskCategoriesPayload struct { - ApikeyToken *string - SessionToken *string - ProjectSlugInput *string -} - // ListRiskPoliciesPayload is the payload type of the risk service // listRiskPolicies method. type ListRiskPoliciesPayload struct { @@ -252,6 +196,33 @@ type ListRiskResultsByChatResult struct { NextCursor *string } +// ListRiskResultsForAgentPayload is the payload type of the risk service +// listRiskResultsForAgent method. +type ListRiskResultsForAgentPayload struct { + ApikeyToken *string + SessionToken *string + ProjectSlugInput *string + // Optional policy ID to filter by. + PolicyID *string + // Optional chat ID to filter by. + ChatID *string + // Cursor to fetch the next page of results. + Cursor *string + // Maximum number of results to return per page. + Limit *int +} + +// ListRiskResultsForAgentResult is the result type of the risk service +// listRiskResultsForAgent method. +type ListRiskResultsForAgentResult struct { + // The list of risk results with match content redacted to opaque fingerprints. + Results []*types.RiskResultRedacted + // Total number of findings across all enabled policies. + TotalCount int64 + // Cursor for the next page of results. + NextCursor *string +} + // ListRiskResultsPayload is the payload type of the risk service // listRiskResults method. type ListRiskResultsPayload struct { @@ -262,19 +233,6 @@ type ListRiskResultsPayload struct { PolicyID *string // Optional chat ID to filter by. ChatID *string - // Optional rule category key to filter by (e.g. secrets, pii, financial). - Category *string - // Optional rule identifier substring to filter by (case-insensitive, e.g. - // 'secret' matches all 'secret.*' rules). - RuleID *string - // If true, collapse results to one row per (policy_id, rule_id, match), - // keeping the most recent occurrence. Useful when the same secret is detected - // many times within a single message body. - UniqueMatch *bool - // Filter results to messages created at or after this timestamp (ISO 8601). - From *string - // Filter results to messages created strictly before this timestamp (ISO 8601). - To *string // Cursor to fetch the next page of results. Cursor *string // Maximum number of results to return per page. @@ -328,129 +286,6 @@ type RiskCapabilitiesResult struct { PiClassifierEnabled bool } -// RiskCategoriesResult is the result type of the risk service -// listRiskCategories method. -type RiskCategoriesResult struct { - // Categories in classification-priority order. The last entry is the 'custom' - // fallback for findings that match none of the others. - Categories []*RiskCategoryDefinition -} - -// One canonical risk category and how findings are classified into it. -type RiskCategoryDefinition struct { - // Canonical category key (e.g. 'secrets', 'pii', 'shadow_mcp'). - Key string - // Human-readable category label for UI rendering. - Label string - // Plain-English description of what this category covers. - Description string - // Lucide icon name suggested for this category. - Icon string - // When non-empty, findings whose source equals this value belong to this - // category. - Source string - // When non-empty, findings whose rule_id is in this exact list belong to this - // category. Checked before rule_id_prefix. - RuleIds []string - // When non-empty, findings whose rule_id starts with this prefix belong to - // this category. The catch-all for a family (e.g. 'pii.'). - RuleIDPrefix string -} - -type RiskOverviewCategory struct { - // Policy category key. - Category string - // Finding count for this category. - Findings int64 -} - -// RiskOverviewResult is the result type of the risk service getRiskOverview -// method. -type RiskOverviewResult struct { - // Inclusive start of the overview window. - From string - // Exclusive end of the overview window. - To string - // Messages analyzed by risk policies in the window. - MessagesScanned int64 - // Policy findings in the window. - Findings int64 - // Chat sessions with at least one finding in the window. - FlaggedSessions int64 - // Enabled risk policies for the current project. - ActivePolicies int64 - // Top policy categories by finding count. - TopCategories []*RiskOverviewCategory - // Top users by finding count. - TopUsers []*RiskOverviewUser - // Top rule_ids by finding count. - TopRules []*RiskRuleBreakdownEntry - // Time-series finding counts by category in the window. - TimeSeriesFindings []*RiskOverviewTimeSeriesFinding -} - -type RiskOverviewTimeSeriesFinding struct { - // Time bucket start. - BucketStart string - // Policy category key. - Category string - // Finding count for this category and time bucket. - Findings int64 -} - -type RiskOverviewUser struct { - // User email, or Unknown user when unavailable. - Email string - // External user identifier as recorded on chats, when known. Empty when the - // finding cannot be attributed to an external user. - ExternalUserID string - // Finding count for this user. - Findings int64 -} - -type RiskRuleBreakdownEntry struct { - // Rule identifier (e.g. 'secret.aws-access-key'). Empty when the finding has - // no rule_id (treat as 'unspecified'). - RuleID string - // Source bucket the rule belongs to (gitleaks, presidio, etc.) for label/icon - // resolution on the dashboard. - Source string - // Finding count for this rule within the window. - Findings int64 -} - -// RiskRuleBreakdownResult is the result type of the risk service -// getRiskRuleBreakdown method. -type RiskRuleBreakdownResult struct { - // Inclusive start of the window used. - From string - // Exclusive end of the window used. - To string - // Category the breakdown is scoped to. - Category string - // Rules in this category, ordered by finding count descending. - Rules []*RiskRuleBreakdownEntry - // Total findings across all rules in this category and window. - Total int64 -} - -// RiskUserBreakdownResult is the result type of the risk service -// getRiskUserBreakdown method. -type RiskUserBreakdownResult struct { - // Inclusive start of the window used. - From string - // Exclusive end of the window used. - To string - // External user the breakdown is scoped to. - ExternalUserID string - // Total findings for this user in the window. - Findings int64 - // Category breakdown for this user, ordered by finding count descending. - Categories []*RiskOverviewCategory - // Rule_id breakdown for this user, ordered by finding count descending. - Rules []*RiskRuleBreakdownEntry -} - // TriggerRiskAnalysisPayload is the payload type of the risk service // triggerRiskAnalysis method. type TriggerRiskAnalysisPayload struct { diff --git a/server/gen/types/risk_result_redacted.go b/server/gen/types/risk_result_redacted.go new file mode 100644 index 0000000000..c8bbf79a23 --- /dev/null +++ b/server/gen/types/risk_result_redacted.go @@ -0,0 +1,47 @@ +// Code generated by goa v3.25.3, DO NOT EDIT. +// +// User types +// +// Command: +// $ goa gen github.com/speakeasy-api/gram/server/design + +package types + +type RiskResultRedacted struct { + // The result ID. + ID string + // The risk policy ID. + PolicyID string + // Policy version when this result was produced. + PolicyVersion int64 + // The chat message that was scanned. + ChatMessageID string + // The chat session containing the message. + ChatID *string + // Title of the chat session. + ChatTitle *string + // The user who owns the chat session. + UserID *string + // Detection source (e.g. gitleaks, presidio, shadow_mcp). + Source string + // The matched rule identifier. + RuleID *string + // Human-readable description of the finding. + Description *string + // Opaque fingerprint of the original match in the form `` where N is the byte length of the original match and XXXXXXXX + // is the first 8 hex characters of sha256(match). For shadow_mcp findings the + // original match value (a non-sensitive server URL or command identifier) is + // passed through verbatim. + MatchRedacted string + // Whether the original finding carried byte-position information within the + // source message. Exact positions are intentionally not exposed to avoid + // reconstruction attacks. + PositionKnown bool + // Confidence score for this finding. + Confidence *float64 + // Tags from the detection rule. + Tags []string + // When this result was created. + CreatedAt string +} diff --git a/server/internal/risk/impl.go b/server/internal/risk/impl.go index 4291bfd9b0..7df1f9119f 100644 --- a/server/internal/risk/impl.go +++ b/server/internal/risk/impl.go @@ -3,6 +3,8 @@ package risk import ( "cmp" "context" + "crypto/sha256" + "encoding/hex" "fmt" "log/slog" "slices" @@ -711,6 +713,80 @@ func parseOptionalTimestamptz(raw *string) (pgtype.Timestamptz, error) { return pgtype.Timestamptz{Time: parsed.UTC(), InfinityModifier: pgtype.Finite, Valid: true}, nil } +// ListRiskResultsForAgent serves the same data as ListRiskResults but strips +// raw `match` content from non-shadow_mcp findings before returning, so the +// agent / MCP surface never holds secret values in model context. Shadow-MCP +// findings pass `match` through verbatim because the value is a server URL +// or stdio command identifier the dashboard already exposes unmasked. +func (s *Service) ListRiskResultsForAgent(ctx context.Context, payload *gen.ListRiskResultsForAgentPayload) (*gen.ListRiskResultsForAgentResult, error) { + base, err := s.ListRiskResults(ctx, &gen.ListRiskResultsPayload{ + ApikeyToken: payload.ApikeyToken, + SessionToken: payload.SessionToken, + ProjectSlugInput: payload.ProjectSlugInput, + PolicyID: payload.PolicyID, + ChatID: payload.ChatID, + Cursor: payload.Cursor, + Limit: payload.Limit, + }) + if err != nil { + return nil, err + } + + redacted := make([]*types.RiskResultRedacted, 0, len(base.Results)) + for _, r := range base.Results { + redacted = append(redacted, redactRiskResult(r)) + } + + return &gen.ListRiskResultsForAgentResult{ + Results: redacted, + TotalCount: base.TotalCount, + NextCursor: base.NextCursor, + }, nil +} + +// redactRiskResult converts a RiskResult into a RiskResultRedacted by +// replacing raw `match` content with an opaque length+sha256-prefix +// fingerprint and coarsening position info to a single boolean. Source == +// "shadow_mcp" is a deliberate carve-out: its match is a server URL or +// command identifier (already shown unmasked in the dashboard) and the agent +// needs to be able to name it to be useful. +func redactRiskResult(r *types.RiskResult) *types.RiskResultRedacted { + matchRedacted := redactMatch(r.Source, r.Match) + + return &types.RiskResultRedacted{ + ID: r.ID, + PolicyID: r.PolicyID, + PolicyVersion: r.PolicyVersion, + ChatMessageID: r.ChatMessageID, + ChatID: r.ChatID, + ChatTitle: r.ChatTitle, + UserID: r.UserID, + Source: r.Source, + RuleID: r.RuleID, + Description: r.Description, + MatchRedacted: matchRedacted, + PositionKnown: r.StartPos != nil && r.EndPos != nil, + Confidence: r.Confidence, + Tags: r.Tags, + CreatedAt: r.CreatedAt, + } +} + +// redactMatch encodes a match value as `` for +// non-shadow_mcp sources, or passes it through verbatim for shadow_mcp. +// A nil/empty match collapses to `` without a sha component +// so the absence of a finding payload is distinguishable from a real hash. +func redactMatch(source string, match *string) string { + if match == nil || *match == "" { + return "" + } + if source == shadowmcp.SourceShadowMCP { + return *match + } + sum := sha256.Sum256([]byte(*match)) + return fmt.Sprintf("", len(*match), hex.EncodeToString(sum[:4])) +} + func (s *Service) ListRiskResultsByChat(ctx context.Context, payload *gen.ListRiskResultsByChatPayload) (*gen.ListRiskResultsByChatResult, error) { authCtx, ok := contextvalues.GetAuthContext(ctx) if !ok || authCtx == nil || authCtx.ProjectID == nil { diff --git a/server/internal/risk/results_test.go b/server/internal/risk/results_test.go index 1f11d97d92..e199f21520 100644 --- a/server/internal/risk/results_test.go +++ b/server/internal/risk/results_test.go @@ -276,3 +276,133 @@ func TestDeleteRiskPolicy_Unauthorized(t *testing.T) { require.ErrorAs(t, err, &oopsErr) require.Equal(t, oops.CodeForbidden, oopsErr.Code) } + +// seedRiskResultWith inserts a finding with caller-supplied source, rule_id, +// and match so redaction-mode tests can vary inputs independently of the +// gitleaks-flavoured default in seedRiskResult. +func seedRiskResultWith(t *testing.T, ti *testInstance, projectID uuid.UUID, orgID string, policyID uuid.UUID, msgID uuid.UUID, source, ruleID, match string) { + t.Helper() + ctx := t.Context() + + resultID, err := uuid.NewV7() + require.NoError(t, err) + + repo := riskrepo.New(ti.conn) + _, err = repo.InsertRiskResults(ctx, []riskrepo.InsertRiskResultsParams{{ + ID: resultID, + ProjectID: projectID, + OrganizationID: orgID, + RiskPolicyID: policyID, + RiskPolicyVersion: 1, + ChatMessageID: msgID, + Source: source, + Found: true, + RuleID: pgtype.Text{String: ruleID, Valid: ruleID != ""}, + Description: pgtype.Text{String: "", Valid: false}, + Match: pgtype.Text{String: match, Valid: match != ""}, + StartPos: pgtype.Int4{Int32: 0, Valid: true}, + EndPos: pgtype.Int4{Int32: int32(len(match)), Valid: true}, //nolint:gosec // test fixture, match len is bounded + Confidence: pgtype.Float8{Float64: 1.0, Valid: true}, + Tags: nil, + }}) + require.NoError(t, err) +} + +func TestListRiskResultsForAgent_RedactsGitleaksMatch(t *testing.T) { + t.Parallel() + ctx, ti := newTestRiskService(t) + + authCtx, _ := contextvalues.GetAuthContext(ctx) + ctx = withExactAccessGrants(t, ctx, ti.conn, + authz.Grant{Scope: authz.ScopeOrgAdmin, Selector: authz.NewSelector(authz.ScopeOrgAdmin, authCtx.ActiveOrganizationID)}, + ) + + policy, err := ti.service.CreateRiskPolicy(ctx, &gen.CreateRiskPolicyPayload{Name: new("Agent Redact")}) + require.NoError(t, err) + + policyID, _ := uuid.Parse(policy.ID) + _, msgID := seedChatMessage(t, ti, *authCtx.ProjectID, authCtx.ActiveOrganizationID) + seedRiskResult(t, ti, *authCtx.ProjectID, authCtx.ActiveOrganizationID, policyID, 1, msgID, true) + + result, err := ti.service.ListRiskResultsForAgent(ctx, &gen.ListRiskResultsForAgentPayload{ + PolicyID: &policy.ID, + }) + require.NoError(t, err) + require.Len(t, result.Results, 1) + + got := result.Results[0] + // seedRiskResult uses match "AKIAIOSFODNN7EXAMPLE" (len 20). + require.NotContains(t, got.MatchRedacted, "AKIA", "raw secret leaked into redacted output") + require.Contains(t, got.MatchRedacted, "len=20") + require.Regexp(t, `^$`, got.MatchRedacted) + require.True(t, got.PositionKnown, "position_known should be true when start/end pos are present") + require.Equal(t, "aws-access-key-id", *got.RuleID) +} + +func TestListRiskResultsForAgent_ShadowMCPPassthrough(t *testing.T) { + t.Parallel() + ctx, ti := newTestRiskService(t) + + authCtx, _ := contextvalues.GetAuthContext(ctx) + ctx = withExactAccessGrants(t, ctx, ti.conn, + authz.Grant{Scope: authz.ScopeOrgAdmin, Selector: authz.NewSelector(authz.ScopeOrgAdmin, authCtx.ActiveOrganizationID)}, + ) + + policy, err := ti.service.CreateRiskPolicy(ctx, &gen.CreateRiskPolicyPayload{ + Name: new("Shadow Passthrough"), + Sources: []string{"shadow_mcp"}, + }) + require.NoError(t, err) + + policyID, _ := uuid.Parse(policy.ID) + _, msgID := seedChatMessage(t, ti, *authCtx.ProjectID, authCtx.ActiveOrganizationID) + const shadowMatch = "mcp__evil-server__" + seedRiskResultWith(t, ti, *authCtx.ProjectID, authCtx.ActiveOrganizationID, policyID, msgID, "shadow_mcp", "unapproved-mcp", shadowMatch) + + result, err := ti.service.ListRiskResultsForAgent(ctx, &gen.ListRiskResultsForAgentPayload{ + PolicyID: &policy.ID, + }) + require.NoError(t, err) + require.Len(t, result.Results, 1) + require.Equal(t, shadowMatch, result.Results[0].MatchRedacted, "shadow_mcp match should pass through verbatim") +} + +func TestListRiskResultsForAgent_DeterministicFingerprint(t *testing.T) { + t.Parallel() + ctx, ti := newTestRiskService(t) + + authCtx, _ := contextvalues.GetAuthContext(ctx) + ctx = withExactAccessGrants(t, ctx, ti.conn, + authz.Grant{Scope: authz.ScopeOrgAdmin, Selector: authz.NewSelector(authz.ScopeOrgAdmin, authCtx.ActiveOrganizationID)}, + ) + + policy, err := ti.service.CreateRiskPolicy(ctx, &gen.CreateRiskPolicyPayload{Name: new("Dedupe")}) + require.NoError(t, err) + policyID, _ := uuid.Parse(policy.ID) + + _, msgA := seedChatMessage(t, ti, *authCtx.ProjectID, authCtx.ActiveOrganizationID) + _, msgB := seedChatMessage(t, ti, *authCtx.ProjectID, authCtx.ActiveOrganizationID) + const sameSecret = "sk-abc123def456" + seedRiskResultWith(t, ti, *authCtx.ProjectID, authCtx.ActiveOrganizationID, policyID, msgA, "gitleaks", "openai-api-key", sameSecret) + seedRiskResultWith(t, ti, *authCtx.ProjectID, authCtx.ActiveOrganizationID, policyID, msgB, "gitleaks", "openai-api-key", sameSecret) + + result, err := ti.service.ListRiskResultsForAgent(ctx, &gen.ListRiskResultsForAgentPayload{ + PolicyID: &policy.ID, + }) + require.NoError(t, err) + require.Len(t, result.Results, 2) + require.Equal(t, result.Results[0].MatchRedacted, result.Results[1].MatchRedacted, + "identical secrets must produce identical fingerprints so the agent can dedupe") +} + +func TestListRiskResultsForAgent_Unauthorized(t *testing.T) { + t.Parallel() + ctx, ti := newTestRiskService(t) + ctx = withExactAccessGrants(t, ctx, ti.conn) + + _, err := ti.service.ListRiskResultsForAgent(ctx, &gen.ListRiskResultsForAgentPayload{}) + require.Error(t, err) + var oopsErr *oops.ShareableError + require.ErrorAs(t, err, &oopsErr) + require.Equal(t, oops.CodeForbidden, oopsErr.Code) +} From 8d45da585d926b5ac03b523008791e831768a8f4 Mon Sep 17 00:00:00 2001 From: Sagar Batchu Date: Tue, 19 May 2026 07:40:14 -0700 Subject: [PATCH 2/8] chore: regenerate SDK and OpenAPI lock after rebase on main Co-Authored-By: Claude Opus 4.7 (1M context) --- client/sdk/.speakeasy/gen.lock | 28 ++++++++++++++++------------ server/gen/http/openapi3.json | 2 +- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/client/sdk/.speakeasy/gen.lock b/client/sdk/.speakeasy/gen.lock index 7314288f5c..b9afd7b648 100644 --- a/client/sdk/.speakeasy/gen.lock +++ b/client/sdk/.speakeasy/gen.lock @@ -1,7 +1,7 @@ lockVersion: 2.0.0 id: 0e7a6274-2092-40cd-9586-9415c6655c64 management: - docChecksum: cb40e8f8746eb8ad6c80edaa92a16dce + docChecksum: c242a5e6ec1fdab31abb67468efb5ade docVersion: 0.0.1 speakeasyVersion: 1.761.5 generationVersion: 2.879.13 @@ -125,7 +125,7 @@ trackedFiles: docs/models/components/authzchallengeprincipaltype.md: last_write_checksum: sha1:2a05ff0cf2f950f8b7e706e090dd8e8148b8c00e docs/models/components/authzchallengereason.md: - last_write_checksum: sha1:01c61ff22a4e3bbc84ff77b417d52753997bee53 + last_write_checksum: sha1:cebee8f2db8d520f15affad12a2e08fc74448d1b docs/models/components/authzchallengeresolutiontype.md: last_write_checksum: sha1:6d87d2f8619aea1db3cc7934d8f24237b6576023 docs/models/components/canonicaltoolattributes.md: @@ -135,7 +135,7 @@ trackedFiles: docs/models/components/captureeventresult.md: last_write_checksum: sha1:832ac883ea96cdb0e257df7e20eb79f6252b81bf docs/models/components/challengebucket.md: - last_write_checksum: sha1:8cf82757965513245ce8b00ee5125d726b9f95e6 + last_write_checksum: sha1:d276d76fd0e6e0934971f67634a286372cfb5d37 docs/models/components/challengeresolution.md: last_write_checksum: sha1:a8cc2595be682ce9aecccbe3d436c3ac8372225d docs/models/components/challengeresolutionresolutiontype.md: @@ -272,6 +272,8 @@ trackedFiles: last_write_checksum: sha1:855425544cda46eb247637c4536ddebf66b2a8b7 docs/models/components/disposition.md: last_write_checksum: sha1:d51c0ffed16ab9b7706cd9c7d439d66379aac4e7 + docs/models/components/effect.md: + last_write_checksum: sha1:2ea3ae7c67eda161f0cf83077be58faa0c550f98 docs/models/components/engine.md: last_write_checksum: sha1:011590e0a0948b257fe56e89b478e1576fdb488b docs/models/components/environment.md: @@ -479,7 +481,9 @@ trackedFiles: docs/models/components/listriskresultsresult.md: last_write_checksum: sha1:b9598d5d1bcbb33c95b7f7b15e7e2c4310bdb3b3 docs/models/components/listrolegrant.md: - last_write_checksum: sha1:f75b13247be2ea6208563bc63a331c3f39a6b92a + last_write_checksum: sha1:65a5d6183a99f3e7984b90f6ef3bb9e223bb0878 + docs/models/components/listrolegranteffect.md: + last_write_checksum: sha1:1f23bbd574c32c9ddadc7924f6b7e88c064b7d51 docs/models/components/listrolegrantscope.md: last_write_checksum: sha1:3304778c1d65e8ad74f4e12200e5e2159660d8a8 docs/models/components/listrolesresult.md: @@ -673,7 +677,7 @@ trackedFiles: docs/models/components/rbacstatus.md: last_write_checksum: sha1:a1751e0bc4882c9845778fd6d849acc58031c82e docs/models/components/reason.md: - last_write_checksum: sha1:a3f73bb4fd35fd1432e5ba663e539b71ac76ed3c + last_write_checksum: sha1:5dd4c7b55edbc64c218d956e8c4ee5b1b247cb1a docs/models/components/redeployrequestbody.md: last_write_checksum: sha1:ce5975e0572331dee1ef25b019656fce4aaebf3a docs/models/components/redeployresult.md: @@ -739,7 +743,7 @@ trackedFiles: docs/models/components/role.md: last_write_checksum: sha1:6f03a698bdceb20b54329bc771aac9bbc5beabd6 docs/models/components/rolegrant.md: - last_write_checksum: sha1:0e55c143e91dfe83dec0ee60050ca7b0ffe42218 + last_write_checksum: sha1:d8fb7d9018f5491a1df67ca32b4cd594827e1a5d docs/models/components/scope.md: last_write_checksum: sha1:18e20f25619d17dd879be5fd900115967511eebe docs/models/components/scopedefinition.md: @@ -3627,7 +3631,7 @@ trackedFiles: src/models/components/auditlogfacetoption.ts: last_write_checksum: sha1:b135dfcb735db7c9c4d1791c6fb46fb925292969 src/models/components/authzchallenge.ts: - last_write_checksum: sha1:045f04d7103195919a18723860c272c08887d86c + last_write_checksum: sha1:89a3ccb4c7649dc17b67802487ff8836a8e956aa src/models/components/canonicaltoolattributes.ts: id: a6b329b1f87b last_write_checksum: sha1:86d90b89fca842c7e25ac436cdb9ee79c7786cc8 @@ -3641,7 +3645,7 @@ trackedFiles: last_write_checksum: sha1:d5bcaceba0170759c53110ef66373a6ab9456e0a pristine_git_object: b3f51a2a16660622475c230ee52c6a4be4beef00 src/models/components/challengebucket.ts: - last_write_checksum: sha1:046e79a5c0de14e44c8aec012d48752f0a69db5a + last_write_checksum: sha1:3aff60ba7bb31d119cc4eb444ccbbd1d5e18e2ba src/models/components/challengeresolution.ts: last_write_checksum: sha1:3eee5fef5022dacd6465f10a32bc64d2c8a5d42d src/models/components/chat.ts: @@ -4091,7 +4095,7 @@ trackedFiles: src/models/components/listriskresultsresult.ts: last_write_checksum: sha1:d16223e7b7bc4d6f6ee25b9876b4746553baff8c src/models/components/listrolegrant.ts: - last_write_checksum: sha1:4c55cc42bd70382afbbca4d1e032c250009bdb5b + last_write_checksum: sha1:fbd6f7f99c8c9b39bdce4137bf2d9573bafb97b1 src/models/components/listrolesresult.ts: last_write_checksum: sha1:c6334302437232f7d088e953ea4b0360f1e6c8c2 src/models/components/listscopesresult.ts: @@ -4369,7 +4373,7 @@ trackedFiles: src/models/components/role.ts: last_write_checksum: sha1:fb3b36bda8162b32a2a016460bbc212483a38455 src/models/components/rolegrant.ts: - last_write_checksum: sha1:ae1432effc5ffeeb9113c6d143bfe44240ee71e4 + last_write_checksum: sha1:5e856c69083e8adb947ee336c5d1db72c7b4af9d src/models/components/scopedefinition.ts: last_write_checksum: sha1:d4fee06648f12ec4dfe9540f1768aa455d396b0b src/models/components/searchchatsfilter.ts: @@ -8197,7 +8201,7 @@ examples: speakeasy-default-list-grants: responses: "200": - application/json: {"grants": [{"scope": "mcp:write"}]} + application/json: {"grants": [{"effect": "allow", "scope": "mcp:write"}]} "400": application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": true} "500": @@ -8263,7 +8267,7 @@ examples: createRole: speakeasy-default-create-role: requestBody: - application/json: {"description": "swerve hm receptor how", "grants": [{"scope": "mcp:connect"}], "name": ""} + application/json: {"description": "swerve hm receptor how", "grants": [{"effect": "allow", "scope": "mcp:connect"}], "name": ""} responses: "201": application/json: {"created_at": "2024-08-15T08:14:35.208Z", "description": "mmm co-producer instead achieve through decision carefully ah", "grants": [], "id": "", "is_system": false, "member_count": 747343, "name": "", "slug": "", "updated_at": "2024-02-02T13:39:51.749Z"} diff --git a/server/gen/http/openapi3.json b/server/gen/http/openapi3.json index f966f9d80b..e5079e7d10 100644 --- a/server/gen/http/openapi3.json +++ b/server/gen/http/openapi3.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/diagnostics.poke":{"get":{"tags":["admin"],"summary":"poke admin","operationId":"admin#poke","responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PokeResponseBody"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRole":{"put":{"description":"Change a team member's role assignment.","operationId":"updateMemberRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRole access","tags":["access"],"x-speakeasy-name-override":"updateMemberRole","x-speakeasy-react-hook":{"name":"UpdateMemberRole"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client. Two paths: manual (caller supplies client_id and optionally client_secret) or auto-DCR (auto_register=true triggers an outbound RFC 7591 registration against the issuer's registration_endpoint).","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.register":{"post":{"description":"Perform an RFC 7591 Dynamic Client Registration call against an existing issuer's registration_endpoint and persist the issued credentials as a new remote_session_client. The issuer must already have a registration_endpoint configured.","operationId":"registerRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"registerRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"RegisterRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_id":{"type":"string","description":"Currently assigned role ID."}},"required":["id","name","email","role_id","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"auto_register":{"type":"boolean","description":"When true, Gram fires an outbound RFC 7591 DCR call against the issuer's registration_endpoint and ignores client_id and client_secret."},"client_id":{"type":"string","description":"Manual-path client_id supplied by the caller."},"client_secret":{"type":"string","description":"Manual-path client secret. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Either supply client_id (manual path) or set auto_register=true (DCR path).","required":["remote_session_issuer_id","user_session_issuer_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"PokeResponseBody":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRemoteSessionIssuerForm":{"type":"object","properties":{"client_name":{"type":"string","description":"Optional client_name to send in the RFC 7591 registration request."},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Optional redirect_uris to send in the RFC 7591 registration request."},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer to register against. Must have a registration_endpoint configured.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the issued client is paired with.","format":"uuid"}},"description":"Form for registering a new remote_session_client against an existing remote_session_issuer via RFC 7591 Dynamic Client Registration.","required":["remote_session_issuer_id","user_session_issuer_id"]},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["id","visibility"]},"UpdateMemberRoleForm":{"type":"object","properties":{"role_id":{"type":"string","description":"The new role ID to assign."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_id"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operational endpoints for administrative tasks."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/diagnostics.poke":{"get":{"tags":["admin"],"summary":"poke admin","operationId":"admin#poke","responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PokeResponseBody"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRole":{"put":{"description":"Change a team member's role assignment.","operationId":"updateMemberRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRole access","tags":["access"],"x-speakeasy-name-override":"updateMemberRole","x-speakeasy-react-hook":{"name":"UpdateMemberRole"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client. Two paths: manual (caller supplies client_id and optionally client_secret) or auto-DCR (auto_register=true triggers an outbound RFC 7591 registration against the issuer's registration_endpoint).","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.register":{"post":{"description":"Perform an RFC 7591 Dynamic Client Registration call against an existing issuer's registration_endpoint and persist the issued credentials as a new remote_session_client. The issuer must already have a registration_endpoint configured.","operationId":"registerRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"registerRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"RegisterRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_id":{"type":"string","description":"Currently assigned role ID."}},"required":["id","name","email","role_id","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"auto_register":{"type":"boolean","description":"When true, Gram fires an outbound RFC 7591 DCR call against the issuer's registration_endpoint and ignores client_id and client_secret."},"client_id":{"type":"string","description":"Manual-path client_id supplied by the caller."},"client_secret":{"type":"string","description":"Manual-path client secret. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Either supply client_id (manual path) or set auto_register=true (DCR path).","required":["remote_session_issuer_id","user_session_issuer_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"PokeResponseBody":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRemoteSessionIssuerForm":{"type":"object","properties":{"client_name":{"type":"string","description":"Optional client_name to send in the RFC 7591 registration request."},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Optional redirect_uris to send in the RFC 7591 registration request."},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer to register against. Must have a registration_endpoint configured.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the issued client is paired with.","format":"uuid"}},"description":"Form for registering a new remote_session_client against an existing remote_session_issuer via RFC 7591 Dynamic Client Registration.","required":["remote_session_issuer_id","user_session_issuer_id"]},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["id","visibility"]},"UpdateMemberRoleForm":{"type":"object","properties":{"role_id":{"type":"string","description":"The new role ID to assign."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_id"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operational endpoints for administrative tasks."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file From c1a9c41a818a0c5fd17920949f1aeab672a56300 Mon Sep 17 00:00:00 2001 From: Sagar Batchu Date: Wed, 20 May 2026 17:26:37 -0700 Subject: [PATCH 3/8] chore: regenerate SDK and OpenAPI lock after rebase on main Co-Authored-By: Claude Opus 4.7 (1M context) --- .speakeasy/workflow.lock | 2 +- client/sdk/.speakeasy/gen.lock | 183 +++++++++++++++++++++----------- server/gen/http/cli/gram/cli.go | 157 +++++++++++++++++---------- server/gen/http/openapi3.json | 2 +- server/gen/risk/client.go | 26 ++++- server/gen/risk/service.go | 63 ++++++++++- 6 files changed, 314 insertions(+), 119 deletions(-) diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index f85d779556..486a34ced1 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -14,7 +14,7 @@ targets: sourceRevisionDigest: sha256:ff26cf6fe2b783e3957d938ce1bfa06663d2cc78ab25a89c9f873cb3db23de15 sourceBlobDigest: sha256:c7f21640b5d998d4d1635fd4506e943031e25c1354d36fa21bf0bed2385cf91c codeSamplesNamespace: gram-api-description-typescript-code-samples - codeSamplesRevisionDigest: sha256:5e43e237c333c5298af866b6236fc06db81b44442ca08fa1cfab0f5752ad4c76 + codeSamplesRevisionDigest: sha256:254a35c169907ea2740dd02d43e2a72d7cefeafb5f5d07125bf12f75e8c8b5db workflow: workflowVersion: 1.0.0 speakeasyVersion: pinned diff --git a/client/sdk/.speakeasy/gen.lock b/client/sdk/.speakeasy/gen.lock index b9afd7b648..1b6f0bcab5 100644 --- a/client/sdk/.speakeasy/gen.lock +++ b/client/sdk/.speakeasy/gen.lock @@ -1,7 +1,7 @@ lockVersion: 2.0.0 id: 0e7a6274-2092-40cd-9586-9415c6655c64 management: - docChecksum: c242a5e6ec1fdab31abb67468efb5ade + docChecksum: 4f5d53b29e1ae0c96ce1e979091a705c docVersion: 0.0.1 speakeasyVersion: 1.761.5 generationVersion: 2.879.13 @@ -157,9 +157,9 @@ trackedFiles: docs/models/components/claudehookpayload.md: last_write_checksum: sha1:9aeeb4a542ec059884f17b4d64a4200ea5f462f5 docs/models/components/claudehookresult.md: - last_write_checksum: sha1:e29f7febd8b2bebbe3c91639ce9b538e22f23356 + last_write_checksum: sha1:48bbaddb1a28d048fde786eb05649b89fed1f3fd docs/models/components/cloneclientfromoauthproxyproviderform.md: - last_write_checksum: sha1:8b7c704d386943adb2fe3410a94ba2391201a7b2 + last_write_checksum: sha1:9a8306e63fa0b666b444ea12a43b7ba193e90d84 docs/models/components/cloneenvironmentrequestbody.md: last_write_checksum: sha1:b8f70e603600ad77b21e37d50cdcde0ee184a2c9 docs/models/components/codexhookpayload.md: @@ -187,7 +187,7 @@ trackedFiles: docs/models/components/createmcpendpointform.md: last_write_checksum: sha1:ec1eb9804dd7a98d81f5dc06d0a657f02548a128 docs/models/components/createmcpserverform.md: - last_write_checksum: sha1:4eddc1753ba55ebee921af09854a8b225e51b69b + last_write_checksum: sha1:ed14a9735da1100fe4045fd2b590c5457e87aba5 docs/models/components/createmcpserverformvisibility.md: last_write_checksum: sha1:a75c05e8b8f0d0bd19a21755e3425a63cd4788fb docs/models/components/createpackageform.md: @@ -211,7 +211,9 @@ trackedFiles: docs/models/components/createprompttemplateresult.md: last_write_checksum: sha1:82f8d98abd297718c3883827787f66a91a125583 docs/models/components/createremotesessionclientform.md: - last_write_checksum: sha1:db2681ac1f7f83274666d22e6ac3a6ece5dc2d49 + last_write_checksum: sha1:e9705fd19443f4617dc6720b392a0e83b3d3b030 + docs/models/components/createremotesessionclientformtokenendpointauthmethod.md: + last_write_checksum: sha1:5e8c9dd136528b35606aac16afab75e3004ab1f2 docs/models/components/createremotesessionissuerform.md: last_write_checksum: sha1:e000badec7a73b52508b912d17375063b8979c5f docs/models/components/createrequestbody.md: @@ -549,7 +551,7 @@ trackedFiles: docs/models/components/mcpregistry.md: last_write_checksum: sha1:fb0e91780ba5dfb14024c1c29f06167a3d6da339 docs/models/components/mcpserver.md: - last_write_checksum: sha1:94cb9eff3b9a7255cfc958ccb3ba2fad70830ecc + last_write_checksum: sha1:24d79c6af37621c4c16183628073d55cd2532632 docs/models/components/mcpservervisibility.md: last_write_checksum: sha1:5b92f014430fc0fd3cc9d90c3f5e007e0edc5e10 docs/models/components/metricsmode.md: @@ -682,8 +684,6 @@ trackedFiles: last_write_checksum: sha1:ce5975e0572331dee1ef25b019656fce4aaebf3a docs/models/components/redeployresult.md: last_write_checksum: sha1:340a77d96566b71b36c058dec6ce1eee93b97ceb - docs/models/components/registerremotesessionissuerform.md: - last_write_checksum: sha1:1958572823b6931b70797424c6524c24840d3649 docs/models/components/registerrequestbody.md: last_write_checksum: sha1:7faa85fe815401c7992c699bbc4698f7e92c9f8e docs/models/components/remotemcpserver.md: @@ -693,7 +693,9 @@ trackedFiles: docs/models/components/remotesession.md: last_write_checksum: sha1:1a841bc06d7e7e0184097774d0161bfc72ad3992 docs/models/components/remotesessionclient.md: - last_write_checksum: sha1:dd3d7938a6134394da6934baa80cc920294d875d + last_write_checksum: sha1:8f6ee07802df3a5b82e3981318ecd543ef2dd989 + docs/models/components/remotesessionclienttokenendpointauthmethod.md: + last_write_checksum: sha1:e3e467405fd316c34e39beb50536f30bb0db87c7 docs/models/components/remotesessionissuer.md: last_write_checksum: sha1:f8fda8fc0afe28a5229529342d6c1b0882d4c0ae docs/models/components/remotesessionissuerdraft.md: @@ -730,6 +732,14 @@ trackedFiles: last_write_checksum: sha1:ee4f73c022688e47355eaa01687064b0336b923b docs/models/components/riskchatsummary.md: last_write_checksum: sha1:63b23b161264d0bacab921bbde2e8e590477e71f + docs/models/components/riskoverviewcategory.md: + last_write_checksum: sha1:55aedc1ad4b6702d6e8c2a6886d22ecfe7b025a3 + docs/models/components/riskoverviewresult.md: + last_write_checksum: sha1:bd920a518dafec7c3594030ebf2fc6df5ca2ce66 + docs/models/components/riskoverviewtimeseriesfinding.md: + last_write_checksum: sha1:0afdaa6e2fcd1ae1b74f06cac2286d58a0364544 + docs/models/components/riskoverviewuser.md: + last_write_checksum: sha1:fefdb84d322735025c450bec24a71ade4c5e1ee6 docs/models/components/riskpolicy.md: last_write_checksum: sha1:dfe5eb39e4b2ac25657f4901c9cc8128ae2f9bcf docs/models/components/riskpolicyaction.md: @@ -852,6 +862,8 @@ trackedFiles: last_write_checksum: sha1:8934fbccf0cc664f9548e491a89261f5a8b4f3c3 docs/models/components/timeseriesbucket.md: last_write_checksum: sha1:0f9f31c7a4adb6abd079a9d1e46852e52bf5a942 + docs/models/components/tokenendpointauthmethod.md: + last_write_checksum: sha1:9c473fd971ed30d19ecb9f61b900de154a87b1df docs/models/components/tool.md: last_write_checksum: sha1:96aa64a96e90747d6e82104c624836c9928e6e96 docs/models/components/toolannotations.md: @@ -911,7 +923,7 @@ trackedFiles: docs/models/components/updatemcpendpointform.md: last_write_checksum: sha1:7d4267078a8a386af4b78120b307357baddac459 docs/models/components/updatemcpserverform.md: - last_write_checksum: sha1:363093fc0bf9b9cc2fac2c26a669a2985cf1da65 + last_write_checksum: sha1:6ee81fcb0d2881ca3e9d848097797d283b25f130 docs/models/components/updatemcpserverformvisibility.md: last_write_checksum: sha1:c533d738ab4fc273f9930d0c2c696a622af7ad79 docs/models/components/updatememberroleform.md: @@ -937,7 +949,9 @@ trackedFiles: docs/models/components/updateprompttemplateresult.md: last_write_checksum: sha1:2c3026fda1bac0c4bb6819757d917b5cb2be7a9c docs/models/components/updateremotesessionclientform.md: - last_write_checksum: sha1:4458d4793cd3a7b2ee5d1a5aa3d6f3b38a1fe4b2 + last_write_checksum: sha1:9562b7300e946b8feceb6ed95274f4c3ded509ce + docs/models/components/updateremotesessionclientformtokenendpointauthmethod.md: + last_write_checksum: sha1:f344ad318b161a473fe1caa9c566f658895e17bc docs/models/components/updateremotesessionissuerform.md: last_write_checksum: sha1:68b1697861f0889ef0c0ce2df17e6d75e8f2ad30 docs/models/components/updaterequestbody.md: @@ -1068,6 +1082,14 @@ trackedFiles: last_write_checksum: sha1:89341474c8d9e39fc92d134b27111325138c5f71 docs/models/operations/captureeventsecurityoption3.md: last_write_checksum: sha1:a29302af1a32eaeec080545801b0238d5652af82 + docs/models/operations/checkmcpendpointslugavailabilityrequest.md: + last_write_checksum: sha1:c0c7cbb86f387eedd665e7f5863df2408fb57ca0 + docs/models/operations/checkmcpendpointslugavailabilitysecurity.md: + last_write_checksum: sha1:a95fe3a3f639ee08c9545704998b3291f768e043 + docs/models/operations/checkmcpendpointslugavailabilitysecurityoption1.md: + last_write_checksum: sha1:e46adc5869b6ebe943b1044e8b996f9559afe209 + docs/models/operations/checkmcpendpointslugavailabilitysecurityoption2.md: + last_write_checksum: sha1:56b9c3ff52f1879a7c1b434078a1a474b1fe9f75 docs/models/operations/checkmcpslugavailabilityrequest.md: last_write_checksum: sha1:74a63a779fd3a8a6f11ed8c37dafa50ed2e341fb docs/models/operations/checkmcpslugavailabilitysecurity.md: @@ -1157,7 +1179,7 @@ trackedFiles: docs/models/operations/createmcpendpointsecurityoption2.md: last_write_checksum: sha1:c59cd6ce3eb1455c695d553c2abec1356958a6c3 docs/models/operations/createmcpserverrequest.md: - last_write_checksum: sha1:67a1d0dad9b93ae514da170584a118aa22c6cf49 + last_write_checksum: sha1:fa15e8ce6e6b5583aeee30669267706fc35b7d18 docs/models/operations/createmcpserversecurity.md: last_write_checksum: sha1:2940ba90d41336edf1c3c4dda8dcf6531deaf855 docs/models/operations/createmcpserversecurityoption1.md: @@ -1193,7 +1215,7 @@ trackedFiles: docs/models/operations/createremotemcpserversecurityoption2.md: last_write_checksum: sha1:7acc6adb78f7a75f1f210d9a18b3c792c3c585f1 docs/models/operations/createremotesessionclientrequest.md: - last_write_checksum: sha1:541cd312e2799b251c966b3584cc06ed528fe501 + last_write_checksum: sha1:74dc6b8bc5f26022dea2fa289617700efa88ed8a docs/models/operations/createremotesessionclientsecurity.md: last_write_checksum: sha1:d0215e7901f17fa4e91ae9b510b7ab0ae394e912 docs/models/operations/createremotesessionclientsecurityoption1.md: @@ -1581,7 +1603,7 @@ trackedFiles: docs/models/operations/getmcpserverdetailssecurityoption2.md: last_write_checksum: sha1:97ba9a8f64052e9980ba35a5df252ee6f1d86130 docs/models/operations/getmcpserverrequest.md: - last_write_checksum: sha1:6685f73b3629048f1ee7b0327353a7fe466d085e + last_write_checksum: sha1:f46c3ea052236168e65a32540c28ec7d1e6a7865 docs/models/operations/getmcpserversecurity.md: last_write_checksum: sha1:a76431c757baa48a204de8778d418b8d87b665c1 docs/models/operations/getmcpserversecurityoption1.md: @@ -1676,6 +1698,14 @@ trackedFiles: last_write_checksum: sha1:06c9f5b42c729f50e666db01b319cb1d3484cb7c docs/models/operations/getriskcapabilitiessecurityoption2.md: last_write_checksum: sha1:4a18318dc2f21d837518c615555759a831763fd5 + docs/models/operations/getriskoverviewrequest.md: + last_write_checksum: sha1:ca9997eaaed50903316369f4f8c5b1fcc73182e6 + docs/models/operations/getriskoverviewsecurity.md: + last_write_checksum: sha1:ee6970b3b00bdec8cc4160a093dfe91e78258be1 + docs/models/operations/getriskoverviewsecurityoption1.md: + last_write_checksum: sha1:a225c057cef00b0fb0da0869077176661a5d44ae + docs/models/operations/getriskoverviewsecurityoption2.md: + last_write_checksum: sha1:69923592ca6012cb289c9f6499c0339fbd5c1825 docs/models/operations/getriskpolicyrequest.md: last_write_checksum: sha1:73a51a6046aa0cdb17cfe8f7e1f93326c1448276 docs/models/operations/getriskpolicysecurity.md: @@ -2196,14 +2226,6 @@ trackedFiles: last_write_checksum: sha1:aa6aaf63cc0e424a12194f2c95ed6a40a4682e5d docs/models/operations/registerdomainsecurity.md: last_write_checksum: sha1:3a46eb2cbcdf063b3a7d12aef8e01f2a27fdfb73 - docs/models/operations/registerremotesessionissuerrequest.md: - last_write_checksum: sha1:aecdc92b855f016e430b142c31222df6e6e6b343 - docs/models/operations/registerremotesessionissuersecurity.md: - last_write_checksum: sha1:2b4756fc720bdc222d6844f363f4e9fa66bf4bbc - docs/models/operations/registerremotesessionissuersecurityoption1.md: - last_write_checksum: sha1:088aeee9badd7801bf0f448037ef33bb4fab2b97 - docs/models/operations/registerremotesessionissuersecurityoption2.md: - last_write_checksum: sha1:dd3252a87a4ab7d6b4ca4cc6fad8d1d257d34f8e docs/models/operations/registerrequest.md: last_write_checksum: sha1:54671072527c501c97534d64c45849f77fd4469e docs/models/operations/registersecurity.md: @@ -2697,17 +2719,19 @@ trackedFiles: docs/sdks/keys/README.md: last_write_checksum: sha1:073836b75573172538ad1f080d33207a9e8a7c7a docs/sdks/mcpendpoints/README.md: - last_write_checksum: sha1:eef53e125bae1aa49b1fd9b5c4f0aa83e8a0fabf + last_write_checksum: sha1:1e7459d65306ac151501a653c4136b4070ed29f5 docs/sdks/mcpmetadata/README.md: last_write_checksum: sha1:c6b5740a3f5a951130dc2f63d5de659165147e50 docs/sdks/mcpregistries/README.md: last_write_checksum: sha1:6e0e53ab4f9d91a9685bc9bfd5517dc99fc47f4c docs/sdks/mcpservers/README.md: - last_write_checksum: sha1:59e92b317c497feff42fea8925280b21ff213d42 + last_write_checksum: sha1:a3759b86c8c8ce239ad8b350857662b043299fa8 docs/sdks/organizations/README.md: last_write_checksum: sha1:c6dfb016efc31136253cfc3b3d9afd259886ecbd docs/sdks/otelforwarding/README.md: last_write_checksum: sha1:9599fbb87a1e733dbaf6180a1602c3ed20e46953 + docs/sdks/overview/README.md: + last_write_checksum: sha1:e3a06275734c91dc4a75a5325aaf40042fb9fb91 docs/sdks/packages/README.md: last_write_checksum: sha1:630727b17ae78739629705da27f894236bba7ad0 docs/sdks/plugins/README.md: @@ -2719,9 +2743,9 @@ trackedFiles: docs/sdks/remotemcp/README.md: last_write_checksum: sha1:ba40ec39aacdc278cab5c33f3c7668bade49ca6c docs/sdks/remotesessionclients/README.md: - last_write_checksum: sha1:5423bae0e7002d370a455a446ff196279fb6639c + last_write_checksum: sha1:3765a51856c3d01695e4fc5ccb527a91be25c4c4 docs/sdks/remotesessionissuers/README.md: - last_write_checksum: sha1:69682b216c8455f4aefa76ef8e94a7058b59857b + last_write_checksum: sha1:30c75645889786df33baa73761310ddd8adba85e docs/sdks/remotesessions/README.md: last_write_checksum: sha1:76b7d6c5e35877e3f7e9def8e6d01f364f0c8664 docs/sdks/resources/README.md: @@ -3086,6 +3110,8 @@ trackedFiles: id: 197fec3e8354 last_write_checksum: sha1:bb031ad236be6f2db26200a6a5d4808336858d82 pristine_git_object: 2fc12972786268f24be2e40429fe155bde314fe1 + src/funcs/mcpEndpointsCheckSlugAvailability.ts: + last_write_checksum: sha1:fd47593433572317773298e53d78f2abde90776b src/funcs/mcpEndpointsCreate.ts: last_write_checksum: sha1:b04b14f3fa1eb0df01808fe97058d8130be2984f src/funcs/mcpEndpointsDelete.ts: @@ -3121,11 +3147,11 @@ trackedFiles: src/funcs/mcpServersDelete.ts: last_write_checksum: sha1:132c70172bb360c277db18b320f891a8efa4a18c src/funcs/mcpServersGet.ts: - last_write_checksum: sha1:27268a990f19439d29f4489a4ca059eef4b57716 + last_write_checksum: sha1:f9cd0277509ec021a0dc4a32c1edbe56842253a5 src/funcs/mcpServersList.ts: last_write_checksum: sha1:fb63dfc3f2d22cf77128555c9e3777b4421d0ada src/funcs/mcpServersUpdate.ts: - last_write_checksum: sha1:e2b7fd6087a47857cf34f0be94b616c3b5f90243 + last_write_checksum: sha1:dabc64edc0ec1e51119fbb590f462d5e10c3162a src/funcs/organizationsCreatePortalSession.ts: last_write_checksum: sha1:67367ee8153b1e408726fef9e02695465ffbb564 src/funcs/organizationsDisableWebhooks.ts: @@ -3245,7 +3271,7 @@ trackedFiles: src/funcs/remoteSessionClientsCloneClientFromOAuthProxyProvider.ts: last_write_checksum: sha1:e5ada8454c71337288791c99c48aff6a7ed3d7b1 src/funcs/remoteSessionClientsCreate.ts: - last_write_checksum: sha1:355d9b6f91985725b78f816ec087c55da0c1e61e + last_write_checksum: sha1:253fda1fff25492886d0511eec82995f2bd545aa src/funcs/remoteSessionClientsDelete.ts: last_write_checksum: sha1:df59390e1b2191d12008e88d74204eb3882d9402 src/funcs/remoteSessionClientsGet.ts: @@ -3264,8 +3290,6 @@ trackedFiles: last_write_checksum: sha1:2f036d370b3db8122c48c44db0600cc7edfb7928 src/funcs/remoteSessionIssuersList.ts: last_write_checksum: sha1:71d85b54df8475fb39933f5b2d1de29392caffb7 - src/funcs/remoteSessionIssuersRegister.ts: - last_write_checksum: sha1:fd5a0858ed3fd6da61eb4cf4503773d34f489aa6 src/funcs/remoteSessionIssuersUpdate.ts: last_write_checksum: sha1:0fbc7c84895e72dae26a043678db6affe778b73a src/funcs/remoteSessionsList.ts: @@ -3284,6 +3308,8 @@ trackedFiles: last_write_checksum: sha1:43468cc19f1b23bcb72a06635452e53c1607fefb src/funcs/riskCapabilitiesGet.ts: last_write_checksum: sha1:a87b56bd3f8a7a5b473ee6d7a0f128aae3d8b22d + src/funcs/riskOverviewGet.ts: + last_write_checksum: sha1:10dc0bdfc2d651c3b001ddb50ce4fe7c0a9a2307 src/funcs/riskPoliciesCreate.ts: last_write_checksum: sha1:d548436503ebb9b176d75d6726928685d2f7f122 src/funcs/riskPoliciesDelete.ts: @@ -3669,9 +3695,9 @@ trackedFiles: src/models/components/claudehookpayload.ts: last_write_checksum: sha1:f990486e8333c922eb2244e05361ba69c4c472b7 src/models/components/claudehookresult.ts: - last_write_checksum: sha1:d72da8680ef447c6322a6f1162d87dfeca8bf1ca + last_write_checksum: sha1:efd4bc197c346a55142b1b3f65194d6c497e554c src/models/components/cloneclientfromoauthproxyproviderform.ts: - last_write_checksum: sha1:436daac86b753fad5eb848aeeeedc26456ac4a5c + last_write_checksum: sha1:0bef17a0ebce63f1d79213da3da4ee0614eeb692 src/models/components/cloneenvironmentrequestbody.ts: last_write_checksum: sha1:b1706b25cf4df77a03adf7a51df0566edb5b9147 src/models/components/codexhookpayload.ts: @@ -3705,7 +3731,7 @@ trackedFiles: src/models/components/createmcpendpointform.ts: last_write_checksum: sha1:ea00ac9a2ec7800f2da800b94d7b30f4cad1993b src/models/components/createmcpserverform.ts: - last_write_checksum: sha1:a9a6d9fb271e7e1cb6095c8825c5a3b6be4edd74 + last_write_checksum: sha1:4d338cba0441c47bda04c556d34ddd1c43593ce8 src/models/components/createpackageform.ts: id: dd89d7ed01c5 last_write_checksum: sha1:7388e08e207a0244cd85e7152b8dd171e8023fc1 @@ -3735,7 +3761,7 @@ trackedFiles: last_write_checksum: sha1:de5a016f9f988dac8c413482fb71ed8b4b6b82f3 pristine_git_object: 74fa544cf81b04adc6b7f22156fb97234e16b929 src/models/components/createremotesessionclientform.ts: - last_write_checksum: sha1:84c3a5018d6da98641bcf2dc29d1b5284e83df8b + last_write_checksum: sha1:40668ef58bda518cba2fe75f29c4e1c36b232bac src/models/components/createremotesessionissuerform.ts: last_write_checksum: sha1:e196f5e06cdb31a5131b0b0128f10f607a107b60 src/models/components/createrequestbody.ts: @@ -3968,7 +3994,7 @@ trackedFiles: pristine_git_object: a6f415c341273d2f679cbaa39ea48eaede35f633 src/models/components/index.ts: id: 0aa842dce54d - last_write_checksum: sha1:ee31bd9f6bbd898bd11e0557a38812cfedfd1784 + last_write_checksum: sha1:a0f8f2806d45f1b699647d5e2b86f36d6c43f2b7 pristine_git_object: 4c964f216a07beb3007a26774ce7bdaa48c9f74c src/models/components/inforesponsebody.ts: id: a1447891c5a4 @@ -4169,7 +4195,7 @@ trackedFiles: src/models/components/mcpregistry.ts: last_write_checksum: sha1:78224741968880f86a10b5ed9aeecac079504722 src/models/components/mcpserver.ts: - last_write_checksum: sha1:607933399c4c1fe55bae04a9532453bba5b71b68 + last_write_checksum: sha1:207b40280f81eb19adf260cfa883bb52896d4d6c src/models/components/modelusage.ts: last_write_checksum: sha1:7b01fb688a987bbb0683cf595f3e7ab1d25ce9cb src/models/components/notmodified.ts: @@ -4312,8 +4338,6 @@ trackedFiles: id: 8a117ec9d1b5 last_write_checksum: sha1:98c35c3b91deb01d402bcbcbde155276bf856f36 pristine_git_object: c69650e6e11c6cdbd2e119840d0d5aa1ebab701b - src/models/components/registerremotesessionissuerform.ts: - last_write_checksum: sha1:507186961c9cc00560f95121796b6e8109219eb6 src/models/components/registerrequestbody.ts: id: 24e8262c5978 last_write_checksum: sha1:caa231f55474911b42f3ef9c54a7caaad14cdd6a @@ -4325,7 +4349,7 @@ trackedFiles: src/models/components/remotesession.ts: last_write_checksum: sha1:de6e908085fc4b717e692fa00d8d1ba41b3faf80 src/models/components/remotesessionclient.ts: - last_write_checksum: sha1:6676ce6a3e57a2fee8e0b3a57d3f2fdb5119a9d3 + last_write_checksum: sha1:dfb274c7ef7e42e04374df0fef5fa552ba4f5d92 src/models/components/remotesessionissuer.ts: last_write_checksum: sha1:5d2443696ab80ea09ce1bc927c3697faacd042c4 src/models/components/remotesessionissuerdraft.ts: @@ -4362,6 +4386,14 @@ trackedFiles: last_write_checksum: sha1:960dcced11bf623f1e1cf14165bcf88a181fba8f src/models/components/riskchatsummary.ts: last_write_checksum: sha1:b4c96b9a2e839bef57233d471be967ecfd80279a + src/models/components/riskoverviewcategory.ts: + last_write_checksum: sha1:22329e90df9b5ab55672520447c182dfb625e4da + src/models/components/riskoverviewresult.ts: + last_write_checksum: sha1:cc5e34b4c10f440caf256b73d1dbcde66e4d17f3 + src/models/components/riskoverviewtimeseriesfinding.ts: + last_write_checksum: sha1:82f57d664bc8ae3c93578578b1bd9ff950efbb7e + src/models/components/riskoverviewuser.ts: + last_write_checksum: sha1:74874672fffd657d1803da88994122f39fded3f9 src/models/components/riskpolicy.ts: last_write_checksum: sha1:bca84fcce8a842a32f6eb5e385407c78560206d1 src/models/components/riskpolicystatus.ts: @@ -4549,7 +4581,7 @@ trackedFiles: src/models/components/updatemcpendpointform.ts: last_write_checksum: sha1:2051b085948e4af650466d7dedc524979979e7d1 src/models/components/updatemcpserverform.ts: - last_write_checksum: sha1:a936389fcd82c61caa3de593c9a3abce021347cc + last_write_checksum: sha1:b62874997065998668a43cf016e273a5dc835e00 src/models/components/updatememberroleform.ts: last_write_checksum: sha1:51b48e1eae3b41468a844cd4bc9c761d42afa0db src/models/components/updateoauthproxyserverrequestbody.ts: @@ -4575,7 +4607,7 @@ trackedFiles: last_write_checksum: sha1:5a041b5080adcfc65c1afef00705abcfa4073103 pristine_git_object: 4d90a023fd313599d92a275675d9aa52574d9ab1 src/models/components/updateremotesessionclientform.ts: - last_write_checksum: sha1:14ccb4f4dcc5bf8e2a996f76582375271ee417b8 + last_write_checksum: sha1:a555f8c54a3438e2cb48550c2db5cdd7754a0b9c src/models/components/updateremotesessionissuerform.ts: last_write_checksum: sha1:e6c1a234efc9b9818263215cd3022efea0838518 src/models/components/updaterequestbody.ts: @@ -4716,6 +4748,8 @@ trackedFiles: id: 21bdb2f609f2 last_write_checksum: sha1:096fb272d1c3a2f3ff0b0be74610ac6244fb264e pristine_git_object: a53edf252e11d0f2c33531a15db3cd9cc2d1de87 + src/models/operations/checkmcpendpointslugavailability.ts: + last_write_checksum: sha1:779b85a05da64c0edb44079249ee569b1dfccfc7 src/models/operations/checkmcpslugavailability.ts: id: 124a6f64724f last_write_checksum: sha1:f2539f30b283b82b5b9fed7a1c11859d7277957a @@ -4945,7 +4979,7 @@ trackedFiles: last_write_checksum: sha1:ced18a4cf28bcf240897c5a580d38dcd44006c38 pristine_git_object: 68b334a669fc30a8ed985415c92d9851ae71ca9b src/models/operations/getmcpserver.ts: - last_write_checksum: sha1:0237a880b10aed2d1b8007f24821efb9bc6ced93 + last_write_checksum: sha1:27680c0cbc8f2fd9e294d710a1117089f8fba3fa src/models/operations/getmcpserverdetails.ts: last_write_checksum: sha1:d2f8088de6c1a6daf9e160425975a26af60d0505 src/models/operations/getobservabilityoverview.ts: @@ -4982,6 +5016,8 @@ trackedFiles: last_write_checksum: sha1:d00780dfce08e2f7045c7756fb3959f78799ff59 src/models/operations/getriskcapabilities.ts: last_write_checksum: sha1:6c8c885d0d1a70b1fbd1892d04fa68e2059058cd + src/models/operations/getriskoverview.ts: + last_write_checksum: sha1:ba0ab87a74ad7a8eaabea747d00f83d19ce3b60e src/models/operations/getriskpolicy.ts: last_write_checksum: sha1:0ad4f4822f542c25a2dd2eb86d00272abb00756f src/models/operations/getriskpolicystatus.ts: @@ -5026,7 +5062,7 @@ trackedFiles: last_write_checksum: sha1:68a17ba4375c98a861ba8ea4838401238e9caf7e src/models/operations/index.ts: id: 0d9ffaf774d2 - last_write_checksum: sha1:a0417ecb9a66668e9d87b6f03f6e8af5931b42c1 + last_write_checksum: sha1:7dd5ac7a32c3a1b6f68a9e9efd8ca995678f9340 pristine_git_object: dfbbde8a33b65de59f2ddc44b5a1200061eeacb0 src/models/operations/integrationsnumberget.ts: id: 0417380c9c27 @@ -5206,8 +5242,6 @@ trackedFiles: id: 12f28a3b2a16 last_write_checksum: sha1:a79df61a492ab6b0d5399e3d676fd2c3bdd7e14a pristine_git_object: 0cfabe56e17d960b7339e51c2c505cc52f5065d3 - src/models/operations/registerremotesessionissuer.ts: - last_write_checksum: sha1:8d3ee9547dcb35ceeb3a3464289b0b6747a05416 src/models/operations/removeoauthserver.ts: id: 53f39ff70e58 last_write_checksum: sha1:7b170dfbd4e01565da034764a2dfb4d32bf2462b @@ -5486,6 +5520,10 @@ trackedFiles: id: fb34660efa37 last_write_checksum: sha1:f894807a99070df2c7c69fe762665b475ee7efa1 pristine_git_object: 0469e624ed8634d1885e61591fedbba189a28eb4 + src/react-query/checkMcpEndpointSlugAvailability.core.ts: + last_write_checksum: sha1:190264ef0cadd979e482f39ae67726aafe790764 + src/react-query/checkMcpEndpointSlugAvailability.ts: + last_write_checksum: sha1:d946709fb6eae6ff66c4d8e33a6bee4b42d44f52 src/react-query/cloneClientFromOAuthProxyProvider.ts: last_write_checksum: sha1:12a74af12efb5958952336758d916295f5a14e42 src/react-query/cloneEnvironment.ts: @@ -5549,7 +5587,7 @@ trackedFiles: src/react-query/createRemoteMcpServer.ts: last_write_checksum: sha1:5d14ece045b260c25476f7d4c49505c236d568b8 src/react-query/createRemoteSessionClient.ts: - last_write_checksum: sha1:08d80d37c381a87ee435c59d00afdf13ff92ac39 + last_write_checksum: sha1:a2df3fa9ce30d6b736e848ba3fe41f93329b22d0 src/react-query/createRemoteSessionIssuer.ts: last_write_checksum: sha1:a930525932c263b944379bd735a0454c7e9454bb src/react-query/createRole.ts: @@ -5705,9 +5743,9 @@ trackedFiles: last_write_checksum: sha1:36d623a09015ee0502b88a1b8f14f0b968eb6f79 pristine_git_object: 39db0fdfee07973ec5020aae68ad4d57d2219f67 src/react-query/getMcpServer.core.ts: - last_write_checksum: sha1:41d9badf25856acf61d33c9e319d809d57b4fdda + last_write_checksum: sha1:5c0495e136904e40d9bf524d5563a0f7766197a7 src/react-query/getMcpServer.ts: - last_write_checksum: sha1:d36f8dda174f725c8c81f533a77b8bef89f34972 + last_write_checksum: sha1:edad2155d5c90a90ef404903baf6288cbfc4f9b5 src/react-query/getObservabilityOverview.core.ts: last_write_checksum: sha1:f21bd773d09bf22f8d5986f1c141dcb3599ec854 src/react-query/getObservabilityOverview.ts: @@ -5796,7 +5834,7 @@ trackedFiles: last_write_checksum: sha1:4aa2ad3f103ef14ea31e605c1d9430e7ec3de3f1 src/react-query/index.ts: id: 9e975471aa65 - last_write_checksum: sha1:35365fb774ca938db125e683003c1594d91e9250 + last_write_checksum: sha1:094ab40d4dafbffeaa6505cca4f420b575ed260a pristine_git_object: ee9cacb2ccb4e0631e0e1fcf4e467454534d2b35 src/react-query/instance.core.ts: id: b18e0a042b11 @@ -6086,8 +6124,6 @@ trackedFiles: id: e3442dec3f9d last_write_checksum: sha1:b8b537914da02a5fcc7ff0d8721f23263d4c5f09 pristine_git_object: 147b73b7e38e307d82853d28f27baf6a95449f9d - src/react-query/registerRemoteSessionIssuer.ts: - last_write_checksum: sha1:05bcf146aadd06af51a1bf087debd17aaf424f85 src/react-query/remoteMcpServers.core.ts: last_write_checksum: sha1:f75e49a07b782489815785bb019e9b2b0429b0f0 src/react-query/remoteMcpServers.ts: @@ -6184,6 +6220,10 @@ trackedFiles: last_write_checksum: sha1:6eb945acdc2cf91199aadf0272c87e8e2857741d src/react-query/riskListShadowMCPApprovals.ts: last_write_checksum: sha1:1ca38168e0badfc7dbc0c1c9ee42b3c2b62fe07e + src/react-query/riskOverview.core.ts: + last_write_checksum: sha1:920437b2c1f602dbff7a11e9b37e38b1bb7bb57d + src/react-query/riskOverview.ts: + last_write_checksum: sha1:4d6818eee82eb22fa245abce209abed4eb1bd6c1 src/react-query/riskPoliciesDelete.ts: last_write_checksum: sha1:7e8bc75739d2cd23efd3cd0fce3b7774fdfdb1cb src/react-query/riskPoliciesGet.core.ts: @@ -6341,7 +6381,7 @@ trackedFiles: src/react-query/updateMcpEndpoint.ts: last_write_checksum: sha1:a76a7bdb241bc50dcb08db286be135e6e64436ec src/react-query/updateMcpServer.ts: - last_write_checksum: sha1:a4f3640e700f9ac21aaf82ebdf94ee773ba6d773 + last_write_checksum: sha1:55eb608cb2acf6809f9c467455d246d080092b2a src/react-query/updateMemberRole.ts: last_write_checksum: sha1:77757f9e2c0f7a2ba89cbf34eb08435146bfd663 src/react-query/updateOAuthProxyServer.ts: @@ -6505,7 +6545,7 @@ trackedFiles: last_write_checksum: sha1:a52a5cc20aa7fa30e4d023de61362aec1915eee7 pristine_git_object: 3eef8a78562a2c8eac664371d2dd69060d673da7 src/sdk/mcpendpoints.ts: - last_write_checksum: sha1:35d505bf9714a9256b5d8ae17f0956829204b368 + last_write_checksum: sha1:73fa5085a17ec02ee46d8f125b4bee8fb093e8fc src/sdk/mcpmetadata.ts: id: ab464cc1fc23 last_write_checksum: sha1:9b4f87965763ed96d3f46f1db71643f76ff96107 @@ -6515,11 +6555,13 @@ trackedFiles: last_write_checksum: sha1:3f43cbc58c4fda6b886ab4f80f73b4993de92d3f pristine_git_object: dfebfc79f3a9812d656d81002e00f583178b86dd src/sdk/mcpservers.ts: - last_write_checksum: sha1:0f52b098395cd0179483688afac01a284e682933 + last_write_checksum: sha1:3e45664e9634dbdbfc2ec9b2c8a1b7af83a3a87b src/sdk/organizations.ts: last_write_checksum: sha1:4b8ba486c1d36f572cf4e577f249d0fa3f3512aa src/sdk/otelforwarding.ts: last_write_checksum: sha1:bdff0a0685140d557a23b72fe543fdc8dbd95996 + src/sdk/overview.ts: + last_write_checksum: sha1:f4aabf225ff648bf1a148d669933f70a24fa8912 src/sdk/packages.ts: id: d71e5e0d5096 last_write_checksum: sha1:cd45c1746ab2a619fb53b913e0398d80731df1dc @@ -6535,9 +6577,9 @@ trackedFiles: src/sdk/remotemcp.ts: last_write_checksum: sha1:b441a0e7f045edc5e8e346027d0b9b9b5ca17d3c src/sdk/remotesessionclients.ts: - last_write_checksum: sha1:fb6ce207fea0c5121f2bd9a135f843a03f86e6a6 + last_write_checksum: sha1:7e5b2c1a6b1bd43825aca55809f5f1ec7178a6f2 src/sdk/remotesessionissuers.ts: - last_write_checksum: sha1:22b8a84e9a75cd661e51a4326c328f94f3107e27 + last_write_checksum: sha1:57d7e101aab2622364e76a9abb882df80d87008a src/sdk/remotesessions.ts: last_write_checksum: sha1:7dabca85324463aa46fa26ba771be47e37c640b8 src/sdk/resources.ts: @@ -6547,7 +6589,7 @@ trackedFiles: src/sdk/results.ts: last_write_checksum: sha1:220552d21499d1871f15ca050009d2ec7646bbad src/sdk/risk.ts: - last_write_checksum: sha1:be77693c3ad1fead906ed32052a6395f6d2cd130 + last_write_checksum: sha1:dfecce29e026ed3023e1e015ac27a230ddb250b5 src/sdk/sdk.ts: id: 784571af2f69 last_write_checksum: sha1:13bae5fb1873ba74f7cc2211435078fdb2683f6d @@ -9175,7 +9217,7 @@ examples: createMcpServer: speakeasy-default-create-mcp-server: requestBody: - application/json: {"visibility": "disabled"} + application/json: {"name": "", "visibility": "disabled"} responses: "200": application/json: {"created_at": "2025-01-23T20:53:32.469Z", "id": "df9f5333-5b18-4ebb-8ff1-d143df62b56f", "project_id": "500b982c-7d90-4657-9e63-bba27d26e2e3", "updated_at": "2024-12-04T04:34:07.135Z", "visibility": "private"} @@ -9561,7 +9603,7 @@ examples: createRemoteSessionClient: speakeasy-default-create-remote-session-client: requestBody: - application/json: {"remote_session_issuer_id": "9c427fdc-c54f-44c3-be91-8986011459d6", "user_session_issuer_id": "cbd47e63-9c47-412a-ae2d-e642b16f5786"} + application/json: {"client_id": "", "remote_session_issuer_id": "9c427fdc-c54f-44c3-be91-8986011459d6", "user_session_issuer_id": "cbd47e63-9c47-412a-ae2d-e642b16f5786"} responses: "200": application/json: {"client_id": "", "client_id_issued_at": "2026-09-12T02:11:06.798Z", "created_at": "2024-02-22T23:36:49.840Z", "id": "3b58bf62-f9bf-4a25-beed-c1c69148bd09", "project_id": "82f5eecb-d49a-42c3-85ee-ee9697ad8481", "remote_session_issuer_id": "cff84fd5-1b43-4a7f-ad98-9246408582ff", "updated_at": "2024-11-28T16:12:11.805Z", "user_session_issuer_id": "f167df5c-4788-485e-9c85-affa4552d5ce"} @@ -9793,6 +9835,27 @@ examples: application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": true} "500": application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": true} + checkMcpEndpointSlugAvailability: + speakeasy-default-check-mcp-endpoint-slug-availability: + parameters: + query: + slug: "" + responses: + "200": + application/json: true + "400": + application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": false} + "500": + application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": false} + getRiskOverview: + speakeasy-default-get-risk-overview: + responses: + "200": + application/json: {"active_policies": 705076, "findings": 312140, "flagged_sessions": 627926, "from": "2024-11-29T21:45:00.489Z", "messages_scanned": 821642, "time_series_findings": [], "to": "2025-12-13T22:42:16.392Z", "top_categories": [], "top_users": [{"email": "Ocie.Corwin@gmail.com", "findings": 58689}]} + "400": + application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} + "500": + application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} examplesVersion: 1.0.2 generatedTests: {} generatedFiles: diff --git a/server/gen/http/cli/gram/cli.go b/server/gen/http/cli/gram/cli.go index b0382fe0ea..18ba426dd0 100644 --- a/server/gen/http/cli/gram/cli.go +++ b/server/gen/http/cli/gram/cli.go @@ -93,7 +93,7 @@ func UsageCommands() []string { "instances get-instance", "integrations (get|list)", "keys (create-key|list-keys|revoke-key|verify-key)", - "mcp-endpoints (create-mcp-endpoint|get-mcp-endpoint|list-mcp-endpoints|update-mcp-endpoint|delete-mcp-endpoint)", + "mcp-endpoints (create-mcp-endpoint|get-mcp-endpoint|list-mcp-endpoints|update-mcp-endpoint|check-mcp-endpoint-slug-availability|delete-mcp-endpoint)", "mcp-metadata (get-mcp-metadata|set-mcp-metadata|export-mcp-metadata)", "mcp-servers (create-mcp-server|get-mcp-server|list-mcp-servers|update-mcp-server|delete-mcp-server)", "organizations (get|send-invite|revoke-invite|update-invite-role|list-invites|list-users|remove-user|enable-webhooks|disable-webhooks|create-portal-session)", @@ -104,10 +104,10 @@ func UsageCommands() []string { "projects (get-project|create-project|list-projects|set-logo|list-allowed-origins|upsert-allowed-origin|delete-project|set-organization-whitelist)", "remote-mcp (create-server|list-servers|get-server|update-server|verify-url|delete-server)", "remote-session-clients (create-remote-session-client|clone-client-fromoauth-proxy-provider|update-remote-session-client|list-remote-session-clients|get-remote-session-client|delete-remote-session-client)", - "remote-session-issuers (discover-remote-session-issuer|create-remote-session-issuer|register-remote-session-issuer|update-remote-session-issuer|list-remote-session-issuers|get-remote-session-issuer|delete-remote-session-issuer)", + "remote-session-issuers (discover-remote-session-issuer|create-remote-session-issuer|update-remote-session-issuer|list-remote-session-issuers|get-remote-session-issuer|delete-remote-session-issuer)", "remote-sessions (list-remote-sessions|revoke-remote-session)", "resources list-resources", - "risk (create-risk-policy|list-risk-policies|get-risk-capabilities|get-risk-policy|update-risk-policy|delete-risk-policy|list-risk-results|list-risk-results-for-agent|list-risk-results-by-chat|get-risk-policy-status|list-shadow-mcp-approvals|approve-shadow-mcp|revoke-shadow-mcp-approval|trigger-risk-analysis)", + "risk (create-risk-policy|list-risk-policies|get-risk-capabilities|get-risk-policy|update-risk-policy|delete-risk-policy|list-risk-results|list-risk-results-for-agent|list-risk-results-by-chat|get-risk-overview|get-risk-policy-status|list-shadow-mcp-approvals|approve-shadow-mcp|revoke-shadow-mcp-approval|trigger-risk-analysis)", "slack (create-slack-app|list-slack-apps|get-slack-app|configure-slack-app|update-slack-app|delete-slack-app)", "telemetry (search-logs|search-tool-calls|search-chats|search-users|capture-event|get-project-metrics-summary|get-user-metrics-summary|get-observability-overview|get-project-overview|list-filter-options|list-attribute-keys|get-hooks-summary|list-hooks-traces)", "templates (create-template|update-template|get-template|list-templates|delete-template|render-template-by-id|render-template)", @@ -766,6 +766,13 @@ func ParseEndpoint( mcpEndpointsUpdateMcpEndpointApikeyTokenFlag = mcpEndpointsUpdateMcpEndpointFlags.String("apikey-token", "", "") mcpEndpointsUpdateMcpEndpointProjectSlugInputFlag = mcpEndpointsUpdateMcpEndpointFlags.String("project-slug-input", "", "") + mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags = flag.NewFlagSet("check-mcp-endpoint-slug-availability", flag.ExitOnError) + mcpEndpointsCheckMcpEndpointSlugAvailabilitySlugFlag = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.String("slug", "REQUIRED", "") + mcpEndpointsCheckMcpEndpointSlugAvailabilityCustomDomainIDFlag = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.String("custom-domain-id", "", "") + mcpEndpointsCheckMcpEndpointSlugAvailabilitySessionTokenFlag = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.String("session-token", "", "") + mcpEndpointsCheckMcpEndpointSlugAvailabilityApikeyTokenFlag = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.String("apikey-token", "", "") + mcpEndpointsCheckMcpEndpointSlugAvailabilityProjectSlugInputFlag = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.String("project-slug-input", "", "") + mcpEndpointsDeleteMcpEndpointFlags = flag.NewFlagSet("delete-mcp-endpoint", flag.ExitOnError) mcpEndpointsDeleteMcpEndpointIDFlag = mcpEndpointsDeleteMcpEndpointFlags.String("id", "REQUIRED", "") mcpEndpointsDeleteMcpEndpointSessionTokenFlag = mcpEndpointsDeleteMcpEndpointFlags.String("session-token", "", "") @@ -801,7 +808,8 @@ func ParseEndpoint( mcpServersCreateMcpServerProjectSlugInputFlag = mcpServersCreateMcpServerFlags.String("project-slug-input", "", "") mcpServersGetMcpServerFlags = flag.NewFlagSet("get-mcp-server", flag.ExitOnError) - mcpServersGetMcpServerIDFlag = mcpServersGetMcpServerFlags.String("id", "REQUIRED", "") + mcpServersGetMcpServerIDFlag = mcpServersGetMcpServerFlags.String("id", "", "") + mcpServersGetMcpServerSlugFlag = mcpServersGetMcpServerFlags.String("slug", "", "") mcpServersGetMcpServerSessionTokenFlag = mcpServersGetMcpServerFlags.String("session-token", "", "") mcpServersGetMcpServerApikeyTokenFlag = mcpServersGetMcpServerFlags.String("apikey-token", "", "") mcpServersGetMcpServerProjectSlugInputFlag = mcpServersGetMcpServerFlags.String("project-slug-input", "", "") @@ -1123,12 +1131,6 @@ func ParseEndpoint( remoteSessionIssuersCreateRemoteSessionIssuerApikeyTokenFlag = remoteSessionIssuersCreateRemoteSessionIssuerFlags.String("apikey-token", "", "") remoteSessionIssuersCreateRemoteSessionIssuerProjectSlugInputFlag = remoteSessionIssuersCreateRemoteSessionIssuerFlags.String("project-slug-input", "", "") - remoteSessionIssuersRegisterRemoteSessionIssuerFlags = flag.NewFlagSet("register-remote-session-issuer", flag.ExitOnError) - remoteSessionIssuersRegisterRemoteSessionIssuerBodyFlag = remoteSessionIssuersRegisterRemoteSessionIssuerFlags.String("body", "REQUIRED", "") - remoteSessionIssuersRegisterRemoteSessionIssuerSessionTokenFlag = remoteSessionIssuersRegisterRemoteSessionIssuerFlags.String("session-token", "", "") - remoteSessionIssuersRegisterRemoteSessionIssuerApikeyTokenFlag = remoteSessionIssuersRegisterRemoteSessionIssuerFlags.String("apikey-token", "", "") - remoteSessionIssuersRegisterRemoteSessionIssuerProjectSlugInputFlag = remoteSessionIssuersRegisterRemoteSessionIssuerFlags.String("project-slug-input", "", "") - remoteSessionIssuersUpdateRemoteSessionIssuerFlags = flag.NewFlagSet("update-remote-session-issuer", flag.ExitOnError) remoteSessionIssuersUpdateRemoteSessionIssuerBodyFlag = remoteSessionIssuersUpdateRemoteSessionIssuerFlags.String("body", "REQUIRED", "") remoteSessionIssuersUpdateRemoteSessionIssuerSessionTokenFlag = remoteSessionIssuersUpdateRemoteSessionIssuerFlags.String("session-token", "", "") @@ -1242,6 +1244,13 @@ func ParseEndpoint( riskListRiskResultsByChatSessionTokenFlag = riskListRiskResultsByChatFlags.String("session-token", "", "") riskListRiskResultsByChatProjectSlugInputFlag = riskListRiskResultsByChatFlags.String("project-slug-input", "", "") + riskGetRiskOverviewFlags = flag.NewFlagSet("get-risk-overview", flag.ExitOnError) + riskGetRiskOverviewFromFlag = riskGetRiskOverviewFlags.String("from", "", "") + riskGetRiskOverviewToFlag = riskGetRiskOverviewFlags.String("to", "", "") + riskGetRiskOverviewApikeyTokenFlag = riskGetRiskOverviewFlags.String("apikey-token", "", "") + riskGetRiskOverviewSessionTokenFlag = riskGetRiskOverviewFlags.String("session-token", "", "") + riskGetRiskOverviewProjectSlugInputFlag = riskGetRiskOverviewFlags.String("project-slug-input", "", "") + riskGetRiskPolicyStatusFlags = flag.NewFlagSet("get-risk-policy-status", flag.ExitOnError) riskGetRiskPolicyStatusIDFlag = riskGetRiskPolicyStatusFlags.String("id", "REQUIRED", "") riskGetRiskPolicyStatusApikeyTokenFlag = riskGetRiskPolicyStatusFlags.String("apikey-token", "", "") @@ -1843,6 +1852,7 @@ func ParseEndpoint( mcpEndpointsGetMcpEndpointFlags.Usage = mcpEndpointsGetMcpEndpointUsage mcpEndpointsListMcpEndpointsFlags.Usage = mcpEndpointsListMcpEndpointsUsage mcpEndpointsUpdateMcpEndpointFlags.Usage = mcpEndpointsUpdateMcpEndpointUsage + mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags.Usage = mcpEndpointsCheckMcpEndpointSlugAvailabilityUsage mcpEndpointsDeleteMcpEndpointFlags.Usage = mcpEndpointsDeleteMcpEndpointUsage mcpMetadataFlags.Usage = mcpMetadataUsage @@ -1930,7 +1940,6 @@ func ParseEndpoint( remoteSessionIssuersFlags.Usage = remoteSessionIssuersUsage remoteSessionIssuersDiscoverRemoteSessionIssuerFlags.Usage = remoteSessionIssuersDiscoverRemoteSessionIssuerUsage remoteSessionIssuersCreateRemoteSessionIssuerFlags.Usage = remoteSessionIssuersCreateRemoteSessionIssuerUsage - remoteSessionIssuersRegisterRemoteSessionIssuerFlags.Usage = remoteSessionIssuersRegisterRemoteSessionIssuerUsage remoteSessionIssuersUpdateRemoteSessionIssuerFlags.Usage = remoteSessionIssuersUpdateRemoteSessionIssuerUsage remoteSessionIssuersListRemoteSessionIssuersFlags.Usage = remoteSessionIssuersListRemoteSessionIssuersUsage remoteSessionIssuersGetRemoteSessionIssuerFlags.Usage = remoteSessionIssuersGetRemoteSessionIssuerUsage @@ -1953,6 +1962,7 @@ func ParseEndpoint( riskListRiskResultsFlags.Usage = riskListRiskResultsUsage riskListRiskResultsForAgentFlags.Usage = riskListRiskResultsForAgentUsage riskListRiskResultsByChatFlags.Usage = riskListRiskResultsByChatUsage + riskGetRiskOverviewFlags.Usage = riskGetRiskOverviewUsage riskGetRiskPolicyStatusFlags.Usage = riskGetRiskPolicyStatusUsage riskListShadowMCPApprovalsFlags.Usage = riskListShadowMCPApprovalsUsage riskApproveShadowMCPFlags.Usage = riskApproveShadowMCPUsage @@ -2593,6 +2603,9 @@ func ParseEndpoint( case "update-mcp-endpoint": epf = mcpEndpointsUpdateMcpEndpointFlags + case "check-mcp-endpoint-slug-availability": + epf = mcpEndpointsCheckMcpEndpointSlugAvailabilityFlags + case "delete-mcp-endpoint": epf = mcpEndpointsDeleteMcpEndpointFlags @@ -2832,9 +2845,6 @@ func ParseEndpoint( case "create-remote-session-issuer": epf = remoteSessionIssuersCreateRemoteSessionIssuerFlags - case "register-remote-session-issuer": - epf = remoteSessionIssuersRegisterRemoteSessionIssuerFlags - case "update-remote-session-issuer": epf = remoteSessionIssuersUpdateRemoteSessionIssuerFlags @@ -2895,6 +2905,9 @@ func ParseEndpoint( case "list-risk-results-by-chat": epf = riskListRiskResultsByChatFlags + case "get-risk-overview": + epf = riskGetRiskOverviewFlags + case "get-risk-policy-status": epf = riskGetRiskPolicyStatusFlags @@ -3612,6 +3625,9 @@ func ParseEndpoint( case "update-mcp-endpoint": endpoint = c.UpdateMcpEndpoint() data, err = mcpendpointsc.BuildUpdateMcpEndpointPayload(*mcpEndpointsUpdateMcpEndpointBodyFlag, *mcpEndpointsUpdateMcpEndpointSessionTokenFlag, *mcpEndpointsUpdateMcpEndpointApikeyTokenFlag, *mcpEndpointsUpdateMcpEndpointProjectSlugInputFlag) + case "check-mcp-endpoint-slug-availability": + endpoint = c.CheckMcpEndpointSlugAvailability() + data, err = mcpendpointsc.BuildCheckMcpEndpointSlugAvailabilityPayload(*mcpEndpointsCheckMcpEndpointSlugAvailabilitySlugFlag, *mcpEndpointsCheckMcpEndpointSlugAvailabilityCustomDomainIDFlag, *mcpEndpointsCheckMcpEndpointSlugAvailabilitySessionTokenFlag, *mcpEndpointsCheckMcpEndpointSlugAvailabilityApikeyTokenFlag, *mcpEndpointsCheckMcpEndpointSlugAvailabilityProjectSlugInputFlag) case "delete-mcp-endpoint": endpoint = c.DeleteMcpEndpoint() data, err = mcpendpointsc.BuildDeleteMcpEndpointPayload(*mcpEndpointsDeleteMcpEndpointIDFlag, *mcpEndpointsDeleteMcpEndpointSessionTokenFlag, *mcpEndpointsDeleteMcpEndpointApikeyTokenFlag, *mcpEndpointsDeleteMcpEndpointProjectSlugInputFlag) @@ -3637,7 +3653,7 @@ func ParseEndpoint( data, err = mcpserversc.BuildCreateMcpServerPayload(*mcpServersCreateMcpServerBodyFlag, *mcpServersCreateMcpServerSessionTokenFlag, *mcpServersCreateMcpServerApikeyTokenFlag, *mcpServersCreateMcpServerProjectSlugInputFlag) case "get-mcp-server": endpoint = c.GetMcpServer() - data, err = mcpserversc.BuildGetMcpServerPayload(*mcpServersGetMcpServerIDFlag, *mcpServersGetMcpServerSessionTokenFlag, *mcpServersGetMcpServerApikeyTokenFlag, *mcpServersGetMcpServerProjectSlugInputFlag) + data, err = mcpserversc.BuildGetMcpServerPayload(*mcpServersGetMcpServerIDFlag, *mcpServersGetMcpServerSlugFlag, *mcpServersGetMcpServerSessionTokenFlag, *mcpServersGetMcpServerApikeyTokenFlag, *mcpServersGetMcpServerProjectSlugInputFlag) case "list-mcp-servers": endpoint = c.ListMcpServers() data, err = mcpserversc.BuildListMcpServersPayload(*mcpServersListMcpServersRemoteMcpServerIDFlag, *mcpServersListMcpServersToolsetIDFlag, *mcpServersListMcpServersSessionTokenFlag, *mcpServersListMcpServersApikeyTokenFlag, *mcpServersListMcpServersProjectSlugInputFlag) @@ -3851,9 +3867,6 @@ func ParseEndpoint( case "create-remote-session-issuer": endpoint = c.CreateRemoteSessionIssuer() data, err = remotesessionissuersc.BuildCreateRemoteSessionIssuerPayload(*remoteSessionIssuersCreateRemoteSessionIssuerBodyFlag, *remoteSessionIssuersCreateRemoteSessionIssuerSessionTokenFlag, *remoteSessionIssuersCreateRemoteSessionIssuerApikeyTokenFlag, *remoteSessionIssuersCreateRemoteSessionIssuerProjectSlugInputFlag) - case "register-remote-session-issuer": - endpoint = c.RegisterRemoteSessionIssuer() - data, err = remotesessionissuersc.BuildRegisterRemoteSessionIssuerPayload(*remoteSessionIssuersRegisterRemoteSessionIssuerBodyFlag, *remoteSessionIssuersRegisterRemoteSessionIssuerSessionTokenFlag, *remoteSessionIssuersRegisterRemoteSessionIssuerApikeyTokenFlag, *remoteSessionIssuersRegisterRemoteSessionIssuerProjectSlugInputFlag) case "update-remote-session-issuer": endpoint = c.UpdateRemoteSessionIssuer() data, err = remotesessionissuersc.BuildUpdateRemoteSessionIssuerPayload(*remoteSessionIssuersUpdateRemoteSessionIssuerBodyFlag, *remoteSessionIssuersUpdateRemoteSessionIssuerSessionTokenFlag, *remoteSessionIssuersUpdateRemoteSessionIssuerApikeyTokenFlag, *remoteSessionIssuersUpdateRemoteSessionIssuerProjectSlugInputFlag) @@ -3914,6 +3927,9 @@ func ParseEndpoint( case "list-risk-results-by-chat": endpoint = c.ListRiskResultsByChat() data, err = riskc.BuildListRiskResultsByChatPayload(*riskListRiskResultsByChatCursorFlag, *riskListRiskResultsByChatLimitFlag, *riskListRiskResultsByChatApikeyTokenFlag, *riskListRiskResultsByChatSessionTokenFlag, *riskListRiskResultsByChatProjectSlugInputFlag) + case "get-risk-overview": + endpoint = c.GetRiskOverview() + data, err = riskc.BuildGetRiskOverviewPayload(*riskGetRiskOverviewFromFlag, *riskGetRiskOverviewToFlag, *riskGetRiskOverviewApikeyTokenFlag, *riskGetRiskOverviewSessionTokenFlag, *riskGetRiskOverviewProjectSlugInputFlag) case "get-risk-policy-status": endpoint = c.GetRiskPolicyStatus() data, err = riskc.BuildGetRiskPolicyStatusPayload(*riskGetRiskPolicyStatusIDFlag, *riskGetRiskPolicyStatusApikeyTokenFlag, *riskGetRiskPolicyStatusSessionTokenFlag, *riskGetRiskPolicyStatusProjectSlugInputFlag) @@ -6864,6 +6880,7 @@ func mcpEndpointsUsage() { fmt.Fprintln(os.Stderr, ` get-mcp-endpoint: Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.`) fmt.Fprintln(os.Stderr, ` list-mcp-endpoints: List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.`) fmt.Fprintln(os.Stderr, ` update-mcp-endpoint: Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.`) + fmt.Fprintln(os.Stderr, ` check-mcp-endpoint-slug-availability: Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.`) fmt.Fprintln(os.Stderr, ` delete-mcp-endpoint: Delete an MCP endpoint`) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Additional help:") @@ -6969,6 +6986,32 @@ func mcpEndpointsUpdateMcpEndpointUsage() { fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-endpoints update-mcp-endpoint --body '{\n \"custom_domain_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"mcp_server_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"slug\": \"aaa\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } +func mcpEndpointsCheckMcpEndpointSlugAvailabilityUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] mcp-endpoints check-mcp-endpoint-slug-availability", os.Args[0]) + fmt.Fprint(os.Stderr, " -slug STRING") + fmt.Fprint(os.Stderr, " -custom-domain-id STRING") + fmt.Fprint(os.Stderr, " -session-token STRING") + fmt.Fprint(os.Stderr, " -apikey-token STRING") + fmt.Fprint(os.Stderr, " -project-slug-input STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -slug STRING: `) + fmt.Fprintln(os.Stderr, ` -custom-domain-id STRING: `) + fmt.Fprintln(os.Stderr, ` -session-token STRING: `) + fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) + fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-endpoints check-mcp-endpoint-slug-availability --slug \"aaa\" --custom-domain-id \"550e8400-e29b-41d4-a716-446655440000\" --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") +} + func mcpEndpointsDeleteMcpEndpointUsage() { // Header with flags fmt.Fprintf(os.Stderr, "%s [flags] mcp-endpoints delete-mcp-endpoint", os.Args[0]) @@ -7085,9 +7128,9 @@ func mcpServersUsage() { fmt.Fprintf(os.Stderr, "Usage:\n %s [globalflags] mcp-servers COMMAND [flags]\n\n", os.Args[0]) fmt.Fprintln(os.Stderr, "COMMAND:") fmt.Fprintln(os.Stderr, ` create-mcp-server: Create a new MCP server`) - fmt.Fprintln(os.Stderr, ` get-mcp-server: Get an MCP server by ID`) + fmt.Fprintln(os.Stderr, ` get-mcp-server: Get an MCP server by ID or slug. Exactly one of id or slug must be provided.`) fmt.Fprintln(os.Stderr, ` list-mcp-servers: List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.`) - fmt.Fprintln(os.Stderr, ` update-mcp-server: Update an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.`) + fmt.Fprintln(os.Stderr, ` update-mcp-server: Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.`) fmt.Fprintln(os.Stderr, ` delete-mcp-server: Delete an MCP server`) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Additional help:") @@ -7114,13 +7157,14 @@ func mcpServersCreateMcpServerUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers create-mcp-server --body '{\n \"environment_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"remote_mcp_server_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"toolset_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"visibility\": \"private\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers create-mcp-server --body '{\n \"environment_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"name\": \"abc123\",\n \"remote_mcp_server_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"toolset_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"visibility\": \"private\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func mcpServersGetMcpServerUsage() { // Header with flags fmt.Fprintf(os.Stderr, "%s [flags] mcp-servers get-mcp-server", os.Args[0]) fmt.Fprint(os.Stderr, " -id STRING") + fmt.Fprint(os.Stderr, " -slug STRING") fmt.Fprint(os.Stderr, " -session-token STRING") fmt.Fprint(os.Stderr, " -apikey-token STRING") fmt.Fprint(os.Stderr, " -project-slug-input STRING") @@ -7128,17 +7172,18 @@ func mcpServersGetMcpServerUsage() { // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Get an MCP server by ID`) + fmt.Fprintln(os.Stderr, `Get an MCP server by ID or slug. Exactly one of id or slug must be provided.`) // Flags list fmt.Fprintln(os.Stderr, ` -id STRING: `) + fmt.Fprintln(os.Stderr, ` -slug STRING: `) fmt.Fprintln(os.Stderr, ` -session-token STRING: `) fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers get-mcp-server --id \"550e8400-e29b-41d4-a716-446655440000\" --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers get-mcp-server --id \"550e8400-e29b-41d4-a716-446655440000\" --slug \"abc123\" --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func mcpServersListMcpServersUsage() { @@ -7178,7 +7223,7 @@ func mcpServersUpdateMcpServerUsage() { // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Update an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.`) + fmt.Fprintln(os.Stderr, `Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.`) // Flags list fmt.Fprintln(os.Stderr, ` -body JSON: `) @@ -7188,7 +7233,7 @@ func mcpServersUpdateMcpServerUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers update-mcp-server --body '{\n \"environment_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"remote_mcp_server_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"toolset_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"visibility\": \"private\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "mcp-servers update-mcp-server --body '{\n \"environment_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"name\": \"abc123\",\n \"remote_mcp_server_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"toolset_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"visibility\": \"private\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func mcpServersDeleteMcpServerUsage() { @@ -8369,7 +8414,7 @@ func remoteSessionClientsUsage() { fmt.Fprintln(os.Stderr, `Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned.`) fmt.Fprintf(os.Stderr, "Usage:\n %s [globalflags] remote-session-clients COMMAND [flags]\n\n", os.Args[0]) fmt.Fprintln(os.Stderr, "COMMAND:") - fmt.Fprintln(os.Stderr, ` create-remote-session-client: Register a remote_session_client. Two paths: manual (caller supplies client_id and optionally client_secret) or auto-DCR (auto_register=true triggers an outbound RFC 7591 registration against the issuer's registration_endpoint).`) + fmt.Fprintln(os.Stderr, ` create-remote-session-client: Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.`) fmt.Fprintln(os.Stderr, ` clone-client-fromoauth-proxy-provider: Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.`) fmt.Fprintln(os.Stderr, ` update-remote-session-client: Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.`) fmt.Fprintln(os.Stderr, ` list-remote-session-clients: List remote_session_clients in the caller's project.`) @@ -8390,7 +8435,7 @@ func remoteSessionClientsCreateRemoteSessionClientUsage() { // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Register a remote_session_client. Two paths: manual (caller supplies client_id and optionally client_secret) or auto-DCR (auto_register=true triggers an outbound RFC 7591 registration against the issuer's registration_endpoint).`) + fmt.Fprintln(os.Stderr, `Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.`) // Flags list fmt.Fprintln(os.Stderr, ` -body JSON: `) @@ -8400,7 +8445,7 @@ func remoteSessionClientsCreateRemoteSessionClientUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients create-remote-session-client --body '{\n \"auto_register\": false,\n \"client_id\": \"abc123\",\n \"client_secret\": \"abc123\",\n \"remote_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients create-remote-session-client --body '{\n \"audience\": \"aaa\",\n \"client_id\": \"abc123\",\n \"client_secret\": \"abc123\",\n \"remote_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"scope\": [\n \"aaa\",\n \"aaa\",\n \"aaa\"\n ],\n \"token_endpoint_auth_method\": \"client_secret_post\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func remoteSessionClientsCloneClientFromOAuthProxyProviderUsage() { @@ -8424,7 +8469,7 @@ func remoteSessionClientsCloneClientFromOAuthProxyProviderUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients clone-client-fromoauth-proxy-provider --body '{\n \"oauth_proxy_provider_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"remote_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients clone-client-fromoauth-proxy-provider --body '{\n \"audience\": \"aaa\",\n \"oauth_proxy_provider_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"remote_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"scope\": [\n \"aaa\",\n \"aaa\",\n \"aaa\"\n ],\n \"token_endpoint_auth_method\": \"client_secret_post\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func remoteSessionClientsUpdateRemoteSessionClientUsage() { @@ -8448,7 +8493,7 @@ func remoteSessionClientsUpdateRemoteSessionClientUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients update-remote-session-client --body '{\n \"client_secret\": \"abc123\",\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-clients update-remote-session-client --body '{\n \"audience\": \"aaa\",\n \"client_secret\": \"abc123\",\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"scope\": [\n \"aaa\",\n \"aaa\",\n \"aaa\"\n ],\n \"token_endpoint_auth_method\": \"client_secret_post\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } func remoteSessionClientsListRemoteSessionClientsUsage() { @@ -8537,7 +8582,6 @@ func remoteSessionIssuersUsage() { fmt.Fprintln(os.Stderr, "COMMAND:") fmt.Fprintln(os.Stderr, ` discover-remote-session-issuer: Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.`) fmt.Fprintln(os.Stderr, ` create-remote-session-issuer: Create a new remote_session_issuer.`) - fmt.Fprintln(os.Stderr, ` register-remote-session-issuer: Perform an RFC 7591 Dynamic Client Registration call against an existing issuer's registration_endpoint and persist the issued credentials as a new remote_session_client. The issuer must already have a registration_endpoint configured.`) fmt.Fprintln(os.Stderr, ` update-remote-session-issuer: Update fields on an existing remote_session_issuer.`) fmt.Fprintln(os.Stderr, ` list-remote-session-issuers: List remote_session_issuers in the caller's project.`) fmt.Fprintln(os.Stderr, ` get-remote-session-issuer: Get a remote_session_issuer by id or by slug. Provide exactly one.`) @@ -8594,30 +8638,6 @@ func remoteSessionIssuersCreateRemoteSessionIssuerUsage() { fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-issuers create-remote-session-issuer --body '{\n \"authorization_endpoint\": \"abc123\",\n \"grant_types_supported\": [\n \"abc123\"\n ],\n \"issuer\": \"abc123\",\n \"jwks_uri\": \"abc123\",\n \"oidc\": false,\n \"passthrough\": false,\n \"registration_endpoint\": \"abc123\",\n \"response_types_supported\": [\n \"abc123\"\n ],\n \"scopes_supported\": [\n \"abc123\"\n ],\n \"slug\": \"abc123\",\n \"token_endpoint\": \"abc123\",\n \"token_endpoint_auth_methods_supported\": [\n \"abc123\"\n ]\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") } -func remoteSessionIssuersRegisterRemoteSessionIssuerUsage() { - // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] remote-session-issuers register-remote-session-issuer", os.Args[0]) - fmt.Fprint(os.Stderr, " -body JSON") - fmt.Fprint(os.Stderr, " -session-token STRING") - fmt.Fprint(os.Stderr, " -apikey-token STRING") - fmt.Fprint(os.Stderr, " -project-slug-input STRING") - fmt.Fprintln(os.Stderr) - - // Description - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Perform an RFC 7591 Dynamic Client Registration call against an existing issuer's registration_endpoint and persist the issued credentials as a new remote_session_client. The issuer must already have a registration_endpoint configured.`) - - // Flags list - fmt.Fprintln(os.Stderr, ` -body JSON: `) - fmt.Fprintln(os.Stderr, ` -session-token STRING: `) - fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) - fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) - - fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "remote-session-issuers register-remote-session-issuer --body '{\n \"client_name\": \"abc123\",\n \"redirect_uris\": [\n \"abc123\"\n ],\n \"remote_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"user_session_issuer_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n }' --session-token \"abc123\" --apikey-token \"abc123\" --project-slug-input \"abc123\"") -} - func remoteSessionIssuersUpdateRemoteSessionIssuerUsage() { // Header with flags fmt.Fprintf(os.Stderr, "%s [flags] remote-session-issuers update-remote-session-issuer", os.Args[0]) @@ -8835,6 +8855,7 @@ func riskUsage() { fmt.Fprintln(os.Stderr, ` list-risk-results: List risk analysis results for the current project.`) fmt.Fprintln(os.Stderr, ` list-risk-results-for-agent: List risk analysis results with the `+"`"+`match`+"`"+` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `+"`"+`match`+"`"+` value — a non-sensitive server URL or command identifier — is passed through verbatim.`) fmt.Fprintln(os.Stderr, ` list-risk-results-by-chat: List risk results grouped by chat session for the current project.`) + fmt.Fprintln(os.Stderr, ` get-risk-overview: Get risk overview metrics and trend data for the current project.`) fmt.Fprintln(os.Stderr, ` get-risk-policy-status: Get the analysis status of a risk policy including progress and workflow state.`) fmt.Fprintln(os.Stderr, ` list-shadow-mcp-approvals: List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.`) fmt.Fprintln(os.Stderr, ` approve-shadow-mcp: Approve a shadow-MCP server so the named policy stops blocking calls to it. `+"`"+`match`+"`"+` is the same opaque server identifier surfaced in `+"`"+`RiskResult.match`+"`"+` — typically a server URL, stdio command, or `+"`"+`mcp____`+"`"+` prefix.`) @@ -9070,6 +9091,32 @@ func riskListRiskResultsByChatUsage() { fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-results-by-chat --cursor \"abc123\" --limit 2 --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") } +func riskGetRiskOverviewUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] risk get-risk-overview", os.Args[0]) + fmt.Fprint(os.Stderr, " -from STRING") + fmt.Fprint(os.Stderr, " -to STRING") + fmt.Fprint(os.Stderr, " -apikey-token STRING") + fmt.Fprint(os.Stderr, " -session-token STRING") + fmt.Fprint(os.Stderr, " -project-slug-input STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Get risk overview metrics and trend data for the current project.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -from STRING: `) + fmt.Fprintln(os.Stderr, ` -to STRING: `) + fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) + fmt.Fprintln(os.Stderr, ` -session-token STRING: `) + fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk get-risk-overview --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") +} + func riskGetRiskPolicyStatusUsage() { // Header with flags fmt.Fprintf(os.Stderr, "%s [flags] risk get-risk-policy-status", os.Args[0]) diff --git a/server/gen/http/openapi3.json b/server/gen/http/openapi3.json index e5079e7d10..85d3d9ec51 100644 --- a/server/gen/http/openapi3.json +++ b/server/gen/http/openapi3.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/diagnostics.poke":{"get":{"tags":["admin"],"summary":"poke admin","operationId":"admin#poke","responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PokeResponseBody"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRole":{"put":{"description":"Change a team member's role assignment.","operationId":"updateMemberRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRole access","tags":["access"],"x-speakeasy-name-override":"updateMemberRole","x-speakeasy-react-hook":{"name":"UpdateMemberRole"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client. Two paths: manual (caller supplies client_id and optionally client_secret) or auto-DCR (auto_register=true triggers an outbound RFC 7591 registration against the issuer's registration_endpoint).","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.register":{"post":{"description":"Perform an RFC 7591 Dynamic Client Registration call against an existing issuer's registration_endpoint and persist the issued credentials as a new remote_session_client. The issuer must already have a registration_endpoint configured.","operationId":"registerRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"registerRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"RegisterRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_id":{"type":"string","description":"Currently assigned role ID."}},"required":["id","name","email","role_id","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"auto_register":{"type":"boolean","description":"When true, Gram fires an outbound RFC 7591 DCR call against the issuer's registration_endpoint and ignores client_id and client_secret."},"client_id":{"type":"string","description":"Manual-path client_id supplied by the caller."},"client_secret":{"type":"string","description":"Manual-path client secret. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Either supply client_id (manual path) or set auto_register=true (DCR path).","required":["remote_session_issuer_id","user_session_issuer_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"PokeResponseBody":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRemoteSessionIssuerForm":{"type":"object","properties":{"client_name":{"type":"string","description":"Optional client_name to send in the RFC 7591 registration request."},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Optional redirect_uris to send in the RFC 7591 registration request."},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer to register against. Must have a registration_endpoint configured.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the issued client is paired with.","format":"uuid"}},"description":"Form for registering a new remote_session_client against an existing remote_session_issuer via RFC 7591 Dynamic Client Registration.","required":["remote_session_issuer_id","user_session_issuer_id"]},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["id","visibility"]},"UpdateMemberRoleForm":{"type":"object","properties":{"role_id":{"type":"string","description":"The new role ID to assign."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_id"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operational endpoints for administrative tasks."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/diagnostics.poke":{"get":{"tags":["admin"],"summary":"poke admin","operationId":"admin#poke","responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PokeResponseBody"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRole":{"put":{"description":"Change a team member's role assignment.","operationId":"updateMemberRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRole access","tags":["access"],"x-speakeasy-name-override":"updateMemberRole","x-speakeasy-react-hook":{"name":"UpdateMemberRole"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.checkSlugAvailability":{"get":{"description":"Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.","operationId":"checkMcpEndpointSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","in":"query","name":"custom_domain_id","schema":{"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMcpEndpointSlugAvailability mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"checkSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMcpEndpointSlugAvailability"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.overview.get":{"get":{"description":"Get risk overview metrics and trend data for the current project.","operationId":"getRiskOverview","parameters":[{"allowEmptyValue":true,"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","in":"query","name":"from","schema":{"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the overview window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the overview window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskOverview risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskOverview"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_id":{"type":"string","description":"Currently assigned role ID."}},"required":["id","name","email","role_id","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"decision":{"type":"string","description":"Top-level block decision for UserPromptSubmit / PostToolUse / Stop / SubagentStop. Use 'block' to halt processing."},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"reason":{"type":"string","description":"Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude (PostToolUse/Stop)."},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange for the cloned client.","pattern":"^[!-~]+$","maxLength":512},"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for the cloned client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the cloned client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. When set, MCP clients are required to authenticate against this issuer before connecting.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["name","visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange.","pattern":"^[!-~]+$","maxLength":512},"client_id":{"type":"string","description":"client_id supplied by the caller."},"client_secret":{"type":"string","description":"client_secret supplied by the caller. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for this client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Caller supplies client_id (and optional client_secret) obtained out-of-band from the upstream issuer.","required":["remote_session_issuer_id","user_session_issuer_id","client_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"slug":{"type":"string","description":"A URL-safe, project-unique slug derived server-side from the name and ID"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication for this server, if any.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"PokeResponseBody":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"audience":{"type":"string","description":"Upstream OAuth audience sent on the authorize redirect and token exchange. Null omits the audience parameter."},"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string"},"description":"Explicit upstream OAuth scopes the dance requests for this client. Null falls back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Null resolves to client_secret_basic at runtime.","enum":["client_secret_basic","client_secret_post"]},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskOverviewCategory":{"type":"object","properties":{"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category.","format":"int64"}},"required":["category","findings"]},"RiskOverviewResult":{"type":"object","properties":{"active_policies":{"type":"integer","description":"Enabled risk policies for the current project.","format":"int64"},"findings":{"type":"integer","description":"Policy findings in the window.","format":"int64"},"flagged_sessions":{"type":"integer","description":"Chat sessions with at least one finding in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the overview window.","format":"date-time"},"messages_scanned":{"type":"integer","description":"Messages analyzed by risk policies in the window.","format":"int64"},"time_series_findings":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewTimeSeriesFinding"},"description":"Time-series finding counts by category in the window."},"to":{"type":"string","description":"Exclusive end of the overview window.","format":"date-time"},"top_categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Top policy categories by finding count."},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewUser"},"description":"Top users by finding count."}},"required":["from","to","messages_scanned","findings","flagged_sessions","active_policies","top_categories","top_users","time_series_findings"]},"RiskOverviewTimeSeriesFinding":{"type":"object","properties":{"bucket_start":{"type":"string","description":"Time bucket start.","format":"date-time"},"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category and time bucket.","format":"int64"}},"required":["bucket_start","category","findings"]},"RiskOverviewUser":{"type":"object","properties":{"email":{"type":"string","description":"User email, or Unknown user when unavailable."},"findings":{"type":"integer","description":"Finding count for this user.","format":"int64"}},"required":["email","findings"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server. Omit to leave the existing name unchanged; if provided, must be non-empty."},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. Omit to disable issuer-gated OAuth.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided. Omit name to leave the existing display name unchanged; the slug is recomputed server-side from the resulting name.","required":["id","visibility"]},"UpdateMemberRoleForm":{"type":"object","properties":{"role_id":{"type":"string","description":"The new role ID to assign."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_id"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Replace the upstream OAuth audience sent for this client. Omit to leave unchanged.","pattern":"^[!-~]+$","maxLength":512},"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Replace the explicit upstream OAuth scopes for this client. Omit to leave unchanged."},"token_endpoint_auth_method":{"type":"string","description":"Change how the client authenticates at the issuer's token endpoint.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operational endpoints for administrative tasks."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file diff --git a/server/gen/risk/client.go b/server/gen/risk/client.go index b2949f3656..a67dd058a9 100644 --- a/server/gen/risk/client.go +++ b/server/gen/risk/client.go @@ -25,6 +25,7 @@ type Client struct { ListRiskResultsEndpoint goa.Endpoint ListRiskResultsForAgentEndpoint goa.Endpoint ListRiskResultsByChatEndpoint goa.Endpoint + GetRiskOverviewEndpoint goa.Endpoint GetRiskPolicyStatusEndpoint goa.Endpoint ListShadowMCPApprovalsEndpoint goa.Endpoint ApproveShadowMCPEndpoint goa.Endpoint @@ -33,7 +34,7 @@ type Client struct { } // NewClient initializes a "risk" service client given the endpoints. -func NewClient(createRiskPolicy, listRiskPolicies, getRiskCapabilities, getRiskPolicy, updateRiskPolicy, deleteRiskPolicy, listRiskResults, listRiskResultsForAgent, listRiskResultsByChat, getRiskPolicyStatus, listShadowMCPApprovals, approveShadowMCP, revokeShadowMCPApproval, triggerRiskAnalysis goa.Endpoint) *Client { +func NewClient(createRiskPolicy, listRiskPolicies, getRiskCapabilities, getRiskPolicy, updateRiskPolicy, deleteRiskPolicy, listRiskResults, listRiskResultsForAgent, listRiskResultsByChat, getRiskOverview, getRiskPolicyStatus, listShadowMCPApprovals, approveShadowMCP, revokeShadowMCPApproval, triggerRiskAnalysis goa.Endpoint) *Client { return &Client{ CreateRiskPolicyEndpoint: createRiskPolicy, ListRiskPoliciesEndpoint: listRiskPolicies, @@ -44,6 +45,7 @@ func NewClient(createRiskPolicy, listRiskPolicies, getRiskCapabilities, getRiskP ListRiskResultsEndpoint: listRiskResults, ListRiskResultsForAgentEndpoint: listRiskResultsForAgent, ListRiskResultsByChatEndpoint: listRiskResultsByChat, + GetRiskOverviewEndpoint: getRiskOverview, GetRiskPolicyStatusEndpoint: getRiskPolicyStatus, ListShadowMCPApprovalsEndpoint: listShadowMCPApprovals, ApproveShadowMCPEndpoint: approveShadowMCP, @@ -249,6 +251,28 @@ func (c *Client) ListRiskResultsByChat(ctx context.Context, p *ListRiskResultsBy return ires.(*ListRiskResultsByChatResult), nil } +// GetRiskOverview calls the "getRiskOverview" endpoint of the "risk" service. +// GetRiskOverview may return the following errors: +// - "unauthorized" (type *goa.ServiceError): unauthorized access +// - "forbidden" (type *goa.ServiceError): permission denied +// - "bad_request" (type *goa.ServiceError): request is invalid +// - "not_found" (type *goa.ServiceError): resource not found +// - "conflict" (type *goa.ServiceError): resource already exists +// - "unsupported_media" (type *goa.ServiceError): unsupported media type +// - "invalid" (type *goa.ServiceError): request contains one or more invalidation fields +// - "invariant_violation" (type *goa.ServiceError): an unexpected error occurred +// - "unexpected" (type *goa.ServiceError): an unexpected error occurred +// - "gateway_error" (type *goa.ServiceError): an unexpected error occurred +// - error: internal error +func (c *Client) GetRiskOverview(ctx context.Context, p *GetRiskOverviewPayload) (res *RiskOverviewResult, err error) { + var ires any + ires, err = c.GetRiskOverviewEndpoint(ctx, p) + if err != nil { + return + } + return ires.(*RiskOverviewResult), nil +} + // GetRiskPolicyStatus calls the "getRiskPolicyStatus" endpoint of the "risk" // service. // GetRiskPolicyStatus may return the following errors: diff --git a/server/gen/risk/service.go b/server/gen/risk/service.go index 3d56fbb4aa..671d0a9f3c 100644 --- a/server/gen/risk/service.go +++ b/server/gen/risk/service.go @@ -41,6 +41,8 @@ type Service interface { ListRiskResultsForAgent(context.Context, *ListRiskResultsForAgentPayload) (res *ListRiskResultsForAgentResult, err error) // List risk results grouped by chat session for the current project. ListRiskResultsByChat(context.Context, *ListRiskResultsByChatPayload) (res *ListRiskResultsByChatResult, err error) + // Get risk overview metrics and trend data for the current project. + GetRiskOverview(context.Context, *GetRiskOverviewPayload) (res *RiskOverviewResult, err error) // Get the analysis status of a risk policy including progress and workflow // state. GetRiskPolicyStatus(context.Context, *GetRiskPolicyStatusPayload) (res *types.RiskPolicyStatus, err error) @@ -80,7 +82,7 @@ const ServiceName = "risk" // MethodNames lists the service method names as defined in the design. These // are the same values that are set in the endpoint request contexts under the // MethodKey key. -var MethodNames = [14]string{"createRiskPolicy", "listRiskPolicies", "getRiskCapabilities", "getRiskPolicy", "updateRiskPolicy", "deleteRiskPolicy", "listRiskResults", "listRiskResultsForAgent", "listRiskResultsByChat", "getRiskPolicyStatus", "listShadowMCPApprovals", "approveShadowMCP", "revokeShadowMCPApproval", "triggerRiskAnalysis"} +var MethodNames = [15]string{"createRiskPolicy", "listRiskPolicies", "getRiskCapabilities", "getRiskPolicy", "updateRiskPolicy", "deleteRiskPolicy", "listRiskResults", "listRiskResultsForAgent", "listRiskResultsByChat", "getRiskOverview", "getRiskPolicyStatus", "listShadowMCPApprovals", "approveShadowMCP", "revokeShadowMCPApproval", "triggerRiskAnalysis"} // ApproveShadowMCPPayload is the payload type of the risk service // approveShadowMCP method. @@ -140,6 +142,19 @@ type GetRiskCapabilitiesPayload struct { ProjectSlugInput *string } +// GetRiskOverviewPayload is the payload type of the risk service +// getRiskOverview method. +type GetRiskOverviewPayload struct { + ApikeyToken *string + SessionToken *string + ProjectSlugInput *string + // Inclusive start of the overview window. Defaults to the start of the 7-day + // calendar window ending at to. + From *string + // Exclusive end of the overview window. Defaults to now. + To *string +} + // GetRiskPolicyPayload is the payload type of the risk service getRiskPolicy // method. type GetRiskPolicyPayload struct { @@ -286,6 +301,52 @@ type RiskCapabilitiesResult struct { PiClassifierEnabled bool } +type RiskOverviewCategory struct { + // Policy category key. + Category string + // Finding count for this category. + Findings int64 +} + +// RiskOverviewResult is the result type of the risk service getRiskOverview +// method. +type RiskOverviewResult struct { + // Inclusive start of the overview window. + From string + // Exclusive end of the overview window. + To string + // Messages analyzed by risk policies in the window. + MessagesScanned int64 + // Policy findings in the window. + Findings int64 + // Chat sessions with at least one finding in the window. + FlaggedSessions int64 + // Enabled risk policies for the current project. + ActivePolicies int64 + // Top policy categories by finding count. + TopCategories []*RiskOverviewCategory + // Top users by finding count. + TopUsers []*RiskOverviewUser + // Time-series finding counts by category in the window. + TimeSeriesFindings []*RiskOverviewTimeSeriesFinding +} + +type RiskOverviewTimeSeriesFinding struct { + // Time bucket start. + BucketStart string + // Policy category key. + Category string + // Finding count for this category and time bucket. + Findings int64 +} + +type RiskOverviewUser struct { + // User email, or Unknown user when unavailable. + Email string + // Finding count for this user. + Findings int64 +} + // TriggerRiskAnalysisPayload is the payload type of the risk service // triggerRiskAnalysis method. type TriggerRiskAnalysisPayload struct { From b3657f3e35ec41e492e12388e37772751e9010c4 Mon Sep 17 00:00:00 2001 From: Sagar Batchu Date: Wed, 20 May 2026 17:37:43 -0700 Subject: [PATCH 4/8] fix(test): remove dead nolint:gosec directive in risk seed helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI's nolintlint flags //nolint suppressions that the underlying linter wouldn't have raised — gosec didn't actually warn on int32(len(match)) in the test fixture, so the directive is dead weight. Removing it satisfies nolintlint without changing test behavior. Co-Authored-By: Claude Opus 4.7 (1M context) --- server/internal/risk/results_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/internal/risk/results_test.go b/server/internal/risk/results_test.go index e199f21520..5e140dc500 100644 --- a/server/internal/risk/results_test.go +++ b/server/internal/risk/results_test.go @@ -301,7 +301,7 @@ func seedRiskResultWith(t *testing.T, ti *testInstance, projectID uuid.UUID, org Description: pgtype.Text{String: "", Valid: false}, Match: pgtype.Text{String: match, Valid: match != ""}, StartPos: pgtype.Int4{Int32: 0, Valid: true}, - EndPos: pgtype.Int4{Int32: int32(len(match)), Valid: true}, //nolint:gosec // test fixture, match len is bounded + EndPos: pgtype.Int4{Int32: int32(len(match)), Valid: true}, Confidence: pgtype.Float8{Float64: 1.0, Valid: true}, Tags: nil, }}) From 0545791d530a2a878c7fbca017e4bfad08b4a416 Mon Sep 17 00:00:00 2001 From: Sagar Batchu Date: Wed, 20 May 2026 21:17:35 -0700 Subject: [PATCH 5/8] chore: regenerate SDK and OpenAPI lock after rebase on main Co-Authored-By: Claude Opus 4.7 (1M context) --- client/sdk/.speakeasy/gen.lock | 20 +++++++++++++------- server/gen/http/openapi3.json | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/client/sdk/.speakeasy/gen.lock b/client/sdk/.speakeasy/gen.lock index 1b6f0bcab5..7c25393cae 100644 --- a/client/sdk/.speakeasy/gen.lock +++ b/client/sdk/.speakeasy/gen.lock @@ -1,7 +1,7 @@ lockVersion: 2.0.0 id: 0e7a6274-2092-40cd-9586-9415c6655c64 management: - docChecksum: 4f5d53b29e1ae0c96ce1e979091a705c + docChecksum: f3c175b86421fc1da46287be7b31dd14 docVersion: 0.0.1 speakeasyVersion: 1.761.5 generationVersion: 2.879.13 @@ -368,6 +368,8 @@ trackedFiles: last_write_checksum: sha1:b34170a37ea86e5b08296226724d1a5e053cac2d docs/models/components/getusermetricssummaryresult.md: last_write_checksum: sha1:7b76f799d62fe0f3eefe3dc7727880167ca5dd71 + docs/models/components/groupby.md: + last_write_checksum: sha1:bf3ea7c63423e3505c5c3faefe0e82e7db5d0b52 docs/models/components/headerinput.md: last_write_checksum: sha1:adc9e1b54d733fb807511030368240cc0e7a2172 docs/models/components/hookeventname.md: @@ -754,6 +756,8 @@ trackedFiles: last_write_checksum: sha1:6f03a698bdceb20b54329bc771aac9bbc5beabd6 docs/models/components/rolegrant.md: last_write_checksum: sha1:d8fb7d9018f5491a1df67ca32b4cd594827e1a5d + docs/models/components/rolesummary.md: + last_write_checksum: sha1:45d8d2e5a97e1fefeab1cd7edaceaff08ce21796 docs/models/components/scope.md: last_write_checksum: sha1:18e20f25619d17dd879be5fd900115967511eebe docs/models/components/scopedefinition.md: @@ -785,13 +789,13 @@ trackedFiles: docs/models/components/searchusersfilter.md: last_write_checksum: sha1:05fb82fdf396a31fd71436ac394fe474279ddd17 docs/models/components/searchuserspayload.md: - last_write_checksum: sha1:6d6278085ddf1725cf08fc861fa9a37f1dd466e4 + last_write_checksum: sha1:c9cb68804bb7b8c6f9de67a1328eac4c7cdccd41 docs/models/components/searchuserspayloadsort.md: last_write_checksum: sha1:d4c931b9e88434c955bd2e326f5828bc5e50fb3f docs/models/components/searchuserspayloadusertype.md: last_write_checksum: sha1:4ac21a796e6018dc8d245caf9199704f50c8b8f3 docs/models/components/searchusersresult.md: - last_write_checksum: sha1:56ee4b00c88b7a2f716e60637afbc398ddd3266b + last_write_checksum: sha1:041a857db17cfadff836fa90234e5fa177ef19ef docs/models/components/securityvariable.md: last_write_checksum: sha1:c9440e44db862ae2ab790d1f490d7a145a23cd9d docs/models/components/selector.md: @@ -3994,7 +3998,7 @@ trackedFiles: pristine_git_object: a6f415c341273d2f679cbaa39ea48eaede35f633 src/models/components/index.ts: id: 0aa842dce54d - last_write_checksum: sha1:a0f8f2806d45f1b699647d5e2b86f36d6c43f2b7 + last_write_checksum: sha1:349ea48a216ee6b0996d1c19e2f0ad7978ce2838 pristine_git_object: 4c964f216a07beb3007a26774ce7bdaa48c9f74c src/models/components/inforesponsebody.ts: id: a1447891c5a4 @@ -4406,6 +4410,8 @@ trackedFiles: last_write_checksum: sha1:fb3b36bda8162b32a2a016460bbc212483a38455 src/models/components/rolegrant.ts: last_write_checksum: sha1:5e856c69083e8adb947ee336c5d1db72c7b4af9d + src/models/components/rolesummary.ts: + last_write_checksum: sha1:282676243abc03437f494ac392000ff98ea08145 src/models/components/scopedefinition.ts: last_write_checksum: sha1:d4fee06648f12ec4dfe9540f1768aa455d396b0b src/models/components/searchchatsfilter.ts: @@ -4441,9 +4447,9 @@ trackedFiles: src/models/components/searchusersfilter.ts: last_write_checksum: sha1:74bd1837172173f9c563f0a8e456fe5a02a0a9a2 src/models/components/searchuserspayload.ts: - last_write_checksum: sha1:2ce5989b9ab31b607295bcc3251c491faed35145 + last_write_checksum: sha1:21182a5f388d46cc671da4a9be81d7b374c0a9ee src/models/components/searchusersresult.ts: - last_write_checksum: sha1:69fb6a06af407e8817fb5a3d55f3a5a2e053d226 + last_write_checksum: sha1:3052a6691e68b7397bd9bfcba570711a91d3630a src/models/components/securityvariable.ts: id: 4aa96a84a4f9 last_write_checksum: sha1:b6435b1d385bc4ce89a1a172f494119f689414cb @@ -7980,7 +7986,7 @@ examples: searchUsers: speakeasy-default-search-users: requestBody: - application/json: {"filter": {"from": "2025-12-19T10:00:00Z", "to": "2025-12-19T11:00:00Z"}, "limit": 50, "sort": "desc", "user_type": "external"} + application/json: {"filter": {"from": "2025-12-19T10:00:00Z", "to": "2025-12-19T11:00:00Z"}, "group_by": "employee", "limit": 50, "sort": "desc", "user_type": "external"} responses: "200": application/json: {"users": []} diff --git a/server/gen/http/openapi3.json b/server/gen/http/openapi3.json index 85d3d9ec51..af3b482729 100644 --- a/server/gen/http/openapi3.json +++ b/server/gen/http/openapi3.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/diagnostics.poke":{"get":{"tags":["admin"],"summary":"poke admin","operationId":"admin#poke","responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PokeResponseBody"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRole":{"put":{"description":"Change a team member's role assignment.","operationId":"updateMemberRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRole access","tags":["access"],"x-speakeasy-name-override":"updateMemberRole","x-speakeasy-react-hook":{"name":"UpdateMemberRole"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.checkSlugAvailability":{"get":{"description":"Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.","operationId":"checkMcpEndpointSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","in":"query","name":"custom_domain_id","schema":{"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMcpEndpointSlugAvailability mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"checkSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMcpEndpointSlugAvailability"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.overview.get":{"get":{"description":"Get risk overview metrics and trend data for the current project.","operationId":"getRiskOverview","parameters":[{"allowEmptyValue":true,"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","in":"query","name":"from","schema":{"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the overview window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the overview window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskOverview risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskOverview"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_id":{"type":"string","description":"Currently assigned role ID."}},"required":["id","name","email","role_id","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"decision":{"type":"string","description":"Top-level block decision for UserPromptSubmit / PostToolUse / Stop / SubagentStop. Use 'block' to halt processing."},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"reason":{"type":"string","description":"Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude (PostToolUse/Stop)."},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange for the cloned client.","pattern":"^[!-~]+$","maxLength":512},"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for the cloned client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the cloned client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. When set, MCP clients are required to authenticate against this issuer before connecting.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["name","visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange.","pattern":"^[!-~]+$","maxLength":512},"client_id":{"type":"string","description":"client_id supplied by the caller."},"client_secret":{"type":"string","description":"client_secret supplied by the caller. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for this client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Caller supplies client_id (and optional client_secret) obtained out-of-band from the upstream issuer.","required":["remote_session_issuer_id","user_session_issuer_id","client_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"slug":{"type":"string","description":"A URL-safe, project-unique slug derived server-side from the name and ID"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication for this server, if any.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"PokeResponseBody":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"audience":{"type":"string","description":"Upstream OAuth audience sent on the authorize redirect and token exchange. Null omits the audience parameter."},"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string"},"description":"Explicit upstream OAuth scopes the dance requests for this client. Null falls back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Null resolves to client_secret_basic at runtime.","enum":["client_secret_basic","client_secret_post"]},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskOverviewCategory":{"type":"object","properties":{"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category.","format":"int64"}},"required":["category","findings"]},"RiskOverviewResult":{"type":"object","properties":{"active_policies":{"type":"integer","description":"Enabled risk policies for the current project.","format":"int64"},"findings":{"type":"integer","description":"Policy findings in the window.","format":"int64"},"flagged_sessions":{"type":"integer","description":"Chat sessions with at least one finding in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the overview window.","format":"date-time"},"messages_scanned":{"type":"integer","description":"Messages analyzed by risk policies in the window.","format":"int64"},"time_series_findings":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewTimeSeriesFinding"},"description":"Time-series finding counts by category in the window."},"to":{"type":"string","description":"Exclusive end of the overview window.","format":"date-time"},"top_categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Top policy categories by finding count."},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewUser"},"description":"Top users by finding count."}},"required":["from","to","messages_scanned","findings","flagged_sessions","active_policies","top_categories","top_users","time_series_findings"]},"RiskOverviewTimeSeriesFinding":{"type":"object","properties":{"bucket_start":{"type":"string","description":"Time bucket start.","format":"date-time"},"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category and time bucket.","format":"int64"}},"required":["bucket_start","category","findings"]},"RiskOverviewUser":{"type":"object","properties":{"email":{"type":"string","description":"User email, or Unknown user when unavailable."},"findings":{"type":"integer","description":"Finding count for this user.","format":"int64"}},"required":["email","findings"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server. Omit to leave the existing name unchanged; if provided, must be non-empty."},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. Omit to disable issuer-gated OAuth.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided. Omit name to leave the existing display name unchanged; the slug is recomputed server-side from the resulting name.","required":["id","visibility"]},"UpdateMemberRoleForm":{"type":"object","properties":{"role_id":{"type":"string","description":"The new role ID to assign."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_id"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Replace the upstream OAuth audience sent for this client. Omit to leave unchanged.","pattern":"^[!-~]+$","maxLength":512},"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Replace the explicit upstream OAuth scopes for this client. Omit to leave unchanged."},"token_endpoint_auth_method":{"type":"string","description":"Change how the client authenticates at the issuer's token endpoint.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operational endpoints for administrative tasks."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/diagnostics.poke":{"get":{"tags":["admin"],"summary":"poke admin","operationId":"admin#poke","responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PokeResponseBody"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRole":{"put":{"description":"Change a team member's role assignment.","operationId":"updateMemberRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRole access","tags":["access"],"x-speakeasy-name-override":"updateMemberRole","x-speakeasy-react-hook":{"name":"UpdateMemberRole"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.checkSlugAvailability":{"get":{"description":"Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.","operationId":"checkMcpEndpointSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","in":"query","name":"custom_domain_id","schema":{"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMcpEndpointSlugAvailability mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"checkSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMcpEndpointSlugAvailability"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.overview.get":{"get":{"description":"Get risk overview metrics and trend data for the current project.","operationId":"getRiskOverview","parameters":[{"allowEmptyValue":true,"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","in":"query","name":"from","schema":{"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the overview window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the overview window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskOverview risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskOverview"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_id":{"type":"string","description":"Currently assigned role ID."}},"required":["id","name","email","role_id","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"decision":{"type":"string","description":"Top-level block decision for UserPromptSubmit / PostToolUse / Stop / SubagentStop. Use 'block' to halt processing."},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"reason":{"type":"string","description":"Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude (PostToolUse/Stop)."},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange for the cloned client.","pattern":"^[!-~]+$","maxLength":512},"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for the cloned client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the cloned client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. When set, MCP clients are required to authenticate against this issuer before connecting.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["name","visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange.","pattern":"^[!-~]+$","maxLength":512},"client_id":{"type":"string","description":"client_id supplied by the caller."},"client_secret":{"type":"string","description":"client_secret supplied by the caller. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for this client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Caller supplies client_id (and optional client_secret) obtained out-of-band from the upstream issuer.","required":["remote_session_issuer_id","user_session_issuer_id","client_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"slug":{"type":"string","description":"A URL-safe, project-unique slug derived server-side from the name and ID"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication for this server, if any.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"PokeResponseBody":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"audience":{"type":"string","description":"Upstream OAuth audience sent on the authorize redirect and token exchange. Null omits the audience parameter."},"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string"},"description":"Explicit upstream OAuth scopes the dance requests for this client. Null falls back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Null resolves to client_secret_basic at runtime.","enum":["client_secret_basic","client_secret_post"]},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskOverviewCategory":{"type":"object","properties":{"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category.","format":"int64"}},"required":["category","findings"]},"RiskOverviewResult":{"type":"object","properties":{"active_policies":{"type":"integer","description":"Enabled risk policies for the current project.","format":"int64"},"findings":{"type":"integer","description":"Policy findings in the window.","format":"int64"},"flagged_sessions":{"type":"integer","description":"Chat sessions with at least one finding in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the overview window.","format":"date-time"},"messages_scanned":{"type":"integer","description":"Messages analyzed by risk policies in the window.","format":"int64"},"time_series_findings":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewTimeSeriesFinding"},"description":"Time-series finding counts by category in the window."},"to":{"type":"string","description":"Exclusive end of the overview window.","format":"date-time"},"top_categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Top policy categories by finding count."},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewUser"},"description":"Top users by finding count."}},"required":["from","to","messages_scanned","findings","flagged_sessions","active_policies","top_categories","top_users","time_series_findings"]},"RiskOverviewTimeSeriesFinding":{"type":"object","properties":{"bucket_start":{"type":"string","description":"Time bucket start.","format":"date-time"},"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category and time bucket.","format":"int64"}},"required":["bucket_start","category","findings"]},"RiskOverviewUser":{"type":"object","properties":{"email":{"type":"string","description":"User email, or Unknown user when unavailable."},"findings":{"type":"integer","description":"Finding count for this user.","format":"int64"}},"required":["email","findings"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"RoleSummary":{"type":"object","properties":{"cost_per_user":{"type":"number","description":"Average cost per user (total_cost / user_count)","format":"double"},"role_id":{"type":"string","description":"Role identifier extracted from role URN"},"role_name":{"type":"string","description":"Human-readable role name"},"total_chats":{"type":"integer","description":"Total chat sessions across all users","format":"int64"},"total_cost":{"type":"number","description":"Total cost across all users with this role","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens across all users","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens across all users","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens across all users","format":"int64"},"user_count":{"type":"integer","description":"Number of users with this role","format":"int64"}},"description":"Aggregated usage summary for a role","required":["role_id","role_name","user_count","total_cost","cost_per_user","total_input_tokens","total_output_tokens","total_tokens","total_chats"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"group_by":{"type":"string","description":"Grouping dimension for results","default":"employee","enum":["employee","role"]},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleSummary"},"description":"List of role usage summaries (populated when group_by=role)"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries (populated when group_by=employee)"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server. Omit to leave the existing name unchanged; if provided, must be non-empty."},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. Omit to disable issuer-gated OAuth.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided. Omit name to leave the existing display name unchanged; the slug is recomputed server-side from the resulting name.","required":["id","visibility"]},"UpdateMemberRoleForm":{"type":"object","properties":{"role_id":{"type":"string","description":"The new role ID to assign."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_id"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Replace the upstream OAuth audience sent for this client. Omit to leave unchanged.","pattern":"^[!-~]+$","maxLength":512},"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Replace the explicit upstream OAuth scopes for this client. Omit to leave unchanged."},"token_endpoint_auth_method":{"type":"string","description":"Change how the client authenticates at the issuer's token endpoint.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operational endpoints for administrative tasks."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file From 971b9438563dee0434e1020912f30cdea7106ab5 Mon Sep 17 00:00:00 2001 From: Sagar Batchu Date: Fri, 22 May 2026 06:27:29 -0700 Subject: [PATCH 6/8] chore: regenerate SDK and OpenAPI lock after rebase on main Co-Authored-By: Claude Opus 4.7 (1M context) --- .speakeasy/out.openapi.yaml | 2368 ++++++++++++------ .speakeasy/workflow.lock | 2 +- client/sdk/.speakeasy/gen.lock | 245 +- client/sdk/src/models/components/index.ts | 9 +- mise.lock | 2 +- server/gen/http/cli/gram/cli.go | 526 +++- server/gen/http/openapi3.json | 2 +- server/gen/http/openapi3.yaml | 2659 +++++++++++++++++---- server/gen/risk/client.go | 77 +- server/gen/risk/service.go | 141 +- 10 files changed, 4688 insertions(+), 1343 deletions(-) diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index 61b65e7537..36e9cd22dc 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -1295,10 +1295,10 @@ paths: x-speakeasy-name-override: resolveChallenge x-speakeasy-react-hook: name: ResolveChallenge - /rpc/access.updateMemberRole: + /rpc/access.updateMemberRoles: put: - description: Change a team member's role assignment. - operationId: updateMemberRole + description: Update a team member's role assignments. + operationId: updateMemberRoles parameters: - allowEmptyValue: true description: API Key header @@ -1318,7 +1318,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateMemberRoleForm' + $ref: '#/components/schemas/UpdateMemberRolesForm' required: true responses: "200": @@ -1385,12 +1385,12 @@ paths: - apikey_header_Gram-Key: [] - session_header_Gram-Session: [] - {} - summary: updateMemberRole access + summary: updateMemberRoles access tags: - access - x-speakeasy-name-override: updateMemberRole + x-speakeasy-name-override: updateMemberRoles x-speakeasy-react-hook: - name: UpdateMemberRole + name: UpdateMemberRoles /rpc/access.updateRole: put: description: Update an existing custom role. @@ -4795,6 +4795,14 @@ paths: schema: description: Filter by external user ID type: string + - allowEmptyValue: true + description: Filter to chats produced by this assistant + in: query + name: assistant_id + schema: + description: Filter to chats produced by this assistant + format: uuid + type: string - allowEmptyValue: true description: Filter by resolution status in: query @@ -4802,6 +4810,17 @@ paths: schema: description: Filter by resolution status type: string + - allowEmptyValue: true + description: 'Filter by whether chat has risk findings: ''true'', ''false'', or empty for no filter.' + in: query + name: has_risk + schema: + description: 'Filter by whether chat has risk findings: ''true'', ''false'', or empty for no filter.' + enum: + - "" + - "true" + - "false" + type: string - allowEmptyValue: true description: Filter chats created after this timestamp (ISO 8601) in: query @@ -7029,10 +7048,10 @@ paths: x-speakeasy-name-override: getDomain x-speakeasy-react-hook: name: getDomain - /rpc/domain.register: - post: - description: Create a custom domain for an organization - operationId: registerDomain + /rpc/domain.listMcpEndpoints: + get: + description: List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through. + operationId: listCustomDomainMcpEndpoints parameters: - allowEmptyValue: true description: Session header @@ -7041,14 +7060,12 @@ paths: schema: description: Session header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateDomainRequestBody' - required: true responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ListCustomDomainMcpEndpointsResult' description: OK response. "400": content: @@ -7107,27 +7124,17 @@ paths: security: - session_header_Gram-Session: [] - {} - summary: createDomain domains + summary: listMcpEndpoints domains tags: - domains - x-speakeasy-name-override: registerDomain + x-speakeasy-name-override: listMcpEndpoints x-speakeasy-react-hook: - name: registerDomain - /rpc/environments.clone: + name: CustomDomainMcpEndpoints + /rpc/domain.register: post: - description: Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation. - operationId: cloneEnvironment + description: Create a custom domain for an organization + operationId: registerDomain parameters: - - allowEmptyValue: true - description: The slug of the source environment to clone - in: query - name: slug - required: true - schema: - description: A short url-friendly label that uniquely identifies a resource. - maxLength: 40 - pattern: ^[a-z0-9_-]{1,128}$ - type: string - allowEmptyValue: true description: Session header in: header @@ -7135,25 +7142,14 @@ paths: schema: description: Session header type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/CloneEnvironmentRequestBody' + $ref: '#/components/schemas/CreateDomainRequestBody' required: true responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/Environment' description: OK response. "400": content: @@ -7210,20 +7206,29 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] + - session_header_Gram-Session: [] - {} - summary: cloneEnvironment environments + summary: createDomain domains tags: - - environments - x-speakeasy-name-override: clone + - domains + x-speakeasy-name-override: registerDomain x-speakeasy-react-hook: - name: CloneEnvironment - /rpc/environments.create: + name: registerDomain + /rpc/environments.clone: post: - description: Create a new environment - operationId: createEnvironment + description: Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation. + operationId: cloneEnvironment parameters: + - allowEmptyValue: true + description: The slug of the source environment to clone + in: query + name: slug + required: true + schema: + description: A short url-friendly label that uniquely identifies a resource. + maxLength: 40 + pattern: ^[a-z0-9_-]{1,128}$ + type: string - allowEmptyValue: true description: Session header in: header @@ -7242,7 +7247,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateEnvironmentForm' + $ref: '#/components/schemas/CloneEnvironmentRequestBody' required: true responses: "200": @@ -7309,27 +7314,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: createEnvironment environments + summary: cloneEnvironment environments tags: - environments - x-speakeasy-name-override: create + x-speakeasy-name-override: clone x-speakeasy-react-hook: - name: CreateEnvironment - /rpc/environments.delete: - delete: - description: Delete an environment - operationId: deleteEnvironment + name: CloneEnvironment + /rpc/environments.create: + post: + description: Create a new environment + operationId: createEnvironment parameters: - - allowEmptyValue: true - description: The slug of the environment to delete - in: query - name: slug - required: true - schema: - description: A short url-friendly label that uniquely identifies a resource. - maxLength: 40 - pattern: ^[a-z0-9_-]{1,128}$ - type: string - allowEmptyValue: true description: Session header in: header @@ -7344,113 +7339,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateEnvironmentForm' + required: true responses: "200": - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": content: application/json: schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - - {} - summary: deleteEnvironment environments - tags: - - environments - x-speakeasy-name-override: deleteBySlug - x-speakeasy-react-hook: - name: DeleteEnvironment - /rpc/environments.deleteSourceLink: - delete: - description: Delete a link between a source and an environment - operationId: deleteSourceEnvironmentLink - parameters: - - allowEmptyValue: true - description: The kind of source (http or function) - in: query - name: source_kind - required: true - schema: - description: The kind of source that can be linked to an environment - enum: - - http - - function - type: string - - allowEmptyValue: true - description: The slug of the source - in: query - name: source_slug - required: true - schema: - description: The slug of the source - type: string - - allowEmptyValue: true - description: Session header - in: header - name: Gram-Session - schema: - description: Session header - type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - responses: - "200": + $ref: '#/components/schemas/Environment' description: OK response. "400": content: @@ -7510,25 +7410,26 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: deleteSourceEnvironmentLink environments + summary: createEnvironment environments tags: - environments - x-speakeasy-name-override: deleteSourceLink + x-speakeasy-name-override: create x-speakeasy-react-hook: - name: DeleteSourceEnvironmentLink - /rpc/environments.deleteToolsetLink: + name: CreateEnvironment + /rpc/environments.delete: delete: - description: Delete a link between a toolset and an environment - operationId: deleteToolsetEnvironmentLink + description: Delete an environment + operationId: deleteEnvironment parameters: - allowEmptyValue: true - description: The ID of the toolset + description: The slug of the environment to delete in: query - name: toolset_id + name: slug required: true schema: - description: The ID of the toolset - format: uuid + description: A short url-friendly label that uniquely identifies a resource. + maxLength: 40 + pattern: ^[a-z0-9_-]{1,128}$ type: string - allowEmptyValue: true description: Session header @@ -7605,16 +7506,16 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: deleteToolsetEnvironmentLink environments + summary: deleteEnvironment environments tags: - environments - x-speakeasy-name-override: deleteToolsetLink + x-speakeasy-name-override: deleteBySlug x-speakeasy-react-hook: - name: DeleteToolsetEnvironmentLink - /rpc/environments.getSourceEnvironment: - get: - description: Get the environment linked to a source - operationId: getSourceEnvironment + name: DeleteEnvironment + /rpc/environments.deleteSourceLink: + delete: + description: Delete a link between a source and an environment + operationId: deleteSourceEnvironmentLink parameters: - allowEmptyValue: true description: The kind of source (http or function) @@ -7651,10 +7552,210 @@ paths: type: string responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/Environment' + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + - {} + summary: deleteSourceEnvironmentLink environments + tags: + - environments + x-speakeasy-name-override: deleteSourceLink + x-speakeasy-react-hook: + name: DeleteSourceEnvironmentLink + /rpc/environments.deleteToolsetLink: + delete: + description: Delete a link between a toolset and an environment + operationId: deleteToolsetEnvironmentLink + parameters: + - allowEmptyValue: true + description: The ID of the toolset + in: query + name: toolset_id + required: true + schema: + description: The ID of the toolset + format: uuid + type: string + - allowEmptyValue: true + description: Session header + in: header + name: Gram-Session + schema: + description: Session header + type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + responses: + "200": + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + - {} + summary: deleteToolsetEnvironmentLink environments + tags: + - environments + x-speakeasy-name-override: deleteToolsetLink + x-speakeasy-react-hook: + name: DeleteToolsetEnvironmentLink + /rpc/environments.getSourceEnvironment: + get: + description: Get the environment linked to a source + operationId: getSourceEnvironment + parameters: + - allowEmptyValue: true + description: The kind of source (http or function) + in: query + name: source_kind + required: true + schema: + description: The kind of source that can be linked to an environment + enum: + - http + - function + type: string + - allowEmptyValue: true + description: The slug of the source + in: query + name: source_slug + required: true + schema: + description: The slug of the source + type: string + - allowEmptyValue: true + description: Session header + in: header + name: Gram-Session + schema: + description: Session header + type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/Environment' description: OK response. "400": content: @@ -18270,27 +18371,11 @@ paths: x-speakeasy-name-override: get x-speakeasy-react-hook: name: RiskCapabilities - /rpc/risk.overview.get: + /rpc/risk.categories: get: - description: Get risk overview metrics and trend data for the current project. - operationId: getRiskOverview + description: 'Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.' + operationId: listRiskCategories parameters: - - allowEmptyValue: true - description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. - in: query - name: from - schema: - description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. - format: date-time - type: string - - allowEmptyValue: true - description: Exclusive end of the overview window. Defaults to now. - in: query - name: to - schema: - description: Exclusive end of the overview window. Defaults to now. - format: date-time - type: string - allowEmptyValue: true description: API Key header in: header @@ -18317,7 +18402,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskOverviewResult' + $ref: '#/components/schemas/RiskCategoriesResult' description: OK response. "400": content: @@ -18379,18 +18464,34 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getRiskOverview risk + summary: listRiskCategories risk tags: - risk - x-speakeasy-group: risk.overview - x-speakeasy-name-override: get + x-speakeasy-group: risk.categories + x-speakeasy-name-override: list x-speakeasy-react-hook: - name: RiskOverview - /rpc/risk.policies.create: - post: - description: Create a new risk analysis policy for the current project. - operationId: createRiskPolicy + name: RiskCategories + /rpc/risk.overview.get: + get: + description: Get risk overview metrics and trend data for the current project. + operationId: getRiskOverview parameters: + - allowEmptyValue: true + description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. + in: query + name: from + schema: + description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. + format: date-time + type: string + - allowEmptyValue: true + description: Exclusive end of the overview window. Defaults to now. + in: query + name: to + schema: + description: Exclusive end of the overview window. Defaults to now. + format: date-time + type: string - allowEmptyValue: true description: API Key header in: header @@ -18412,18 +18513,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateRiskPolicyRequestBody' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/RiskPolicy' + $ref: '#/components/schemas/RiskOverviewResult' description: OK response. "400": content: @@ -18485,27 +18580,41 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: createRiskPolicy risk + summary: getRiskOverview risk tags: - risk - x-speakeasy-group: risk.policies - x-speakeasy-name-override: create + x-speakeasy-group: risk.overview + x-speakeasy-name-override: get x-speakeasy-react-hook: - name: RiskCreatePolicy - type: mutation - /rpc/risk.policies.delete: - delete: - description: Delete a risk analysis policy. - operationId: deleteRiskPolicy + name: RiskOverview + /rpc/risk.overview.rules: + get: + description: Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview. + operationId: getRiskRuleBreakdown parameters: - allowEmptyValue: true - description: The policy ID. + description: Required category key to break down by rule_id (e.g. secrets, pii). in: query - name: id + name: category required: true schema: - description: The policy ID. - format: uuid + description: Required category key to break down by rule_id (e.g. secrets, pii). + type: string + - allowEmptyValue: true + description: Inclusive start of the window. Defaults to the same 7-day window as the overview. + in: query + name: from + schema: + description: Inclusive start of the window. Defaults to the same 7-day window as the overview. + format: date-time + type: string + - allowEmptyValue: true + description: Exclusive end of the window. Defaults to now. + in: query + name: to + schema: + description: Exclusive end of the window. Defaults to now. + format: date-time type: string - allowEmptyValue: true description: API Key header @@ -18530,6 +18639,10 @@ paths: type: string responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/RiskRuleBreakdownResult' description: OK response. "400": content: @@ -18591,24 +18704,41 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: deleteRiskPolicy risk + summary: getRiskRuleBreakdown risk tags: - risk - x-speakeasy-group: risk.policies - x-speakeasy-name-override: delete - /rpc/risk.policies.get: + x-speakeasy-group: risk.overview + x-speakeasy-name-override: rules + x-speakeasy-react-hook: + name: RiskRuleBreakdown + /rpc/risk.overview.userBreakdown: get: - description: Get a risk analysis policy by ID. - operationId: getRiskPolicy + description: Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview. + operationId: getRiskUserBreakdown parameters: - allowEmptyValue: true - description: The policy ID. + description: External user identifier to scope the breakdown to. in: query - name: id + name: external_user_id required: true schema: - description: The policy ID. - format: uuid + description: External user identifier to scope the breakdown to. + type: string + - allowEmptyValue: true + description: Inclusive start of the window. Defaults to the same 7-day window as the overview. + in: query + name: from + schema: + description: Inclusive start of the window. Defaults to the same 7-day window as the overview. + format: date-time + type: string + - allowEmptyValue: true + description: Exclusive end of the window. Defaults to now. + in: query + name: to + schema: + description: Exclusive end of the window. Defaults to now. + format: date-time type: string - allowEmptyValue: true description: API Key header @@ -18636,7 +18766,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskPolicy' + $ref: '#/components/schemas/RiskUserBreakdownResult' description: OK response. "400": content: @@ -18698,15 +18828,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getRiskPolicy risk + summary: getRiskUserBreakdown risk tags: - risk - x-speakeasy-group: risk.policies - x-speakeasy-name-override: get - /rpc/risk.policies.list: - get: - description: List all risk analysis policies for the current project. - operationId: listRiskPolicies + x-speakeasy-group: risk.overview + x-speakeasy-name-override: userBreakdown + x-speakeasy-react-hook: + name: RiskUserBreakdown + /rpc/risk.policies.create: + post: + description: Create a new risk analysis policy for the current project. + operationId: createRiskPolicy parameters: - allowEmptyValue: true description: API Key header @@ -18729,12 +18861,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRiskPolicyRequestBody' + required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ListRiskPoliciesResult' + $ref: '#/components/schemas/RiskPolicy' description: OK response. "400": content: @@ -18796,17 +18934,18 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listRiskPolicies risk + summary: createRiskPolicy risk tags: - risk x-speakeasy-group: risk.policies - x-speakeasy-name-override: list + x-speakeasy-name-override: create x-speakeasy-react-hook: - name: RiskListPolicies - /rpc/risk.policies.status: - get: - description: Get the analysis status of a risk policy including progress and workflow state. - operationId: getRiskPolicyStatus + name: RiskCreatePolicy + type: mutation + /rpc/risk.policies.delete: + delete: + description: Delete a risk analysis policy. + operationId: deleteRiskPolicy parameters: - allowEmptyValue: true description: The policy ID. @@ -18840,10 +18979,6 @@ paths: type: string responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/RiskPolicyStatus' description: OK response. "400": content: @@ -18905,116 +19040,25 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getRiskPolicyStatus risk + summary: deleteRiskPolicy risk tags: - risk x-speakeasy-group: risk.policies - x-speakeasy-name-override: status - /rpc/risk.policies.trigger: - post: - description: Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message. - operationId: triggerRiskAnalysis + x-speakeasy-name-override: delete + /rpc/risk.policies.get: + get: + description: Get a risk analysis policy by ID. + operationId: getRiskPolicy parameters: - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - - allowEmptyValue: true - description: Session header - in: header - name: Gram-Session + description: The policy ID. + in: query + name: id + required: true schema: - description: Session header + description: The policy ID. + format: uuid type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/TriggerRiskAnalysisRequestBody' - required: true - responses: - "200": - description: OK response. - "400": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'bad_request: request is invalid' - "401": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unauthorized: unauthorized access' - "403": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'forbidden: permission denied' - "404": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'not_found: resource not found' - "409": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'conflict: resource already exists' - "415": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unsupported_media: unsupported media type' - "422": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'invalid: request contains one or more invalidation fields' - "500": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'unexpected: an unexpected error occurred' - "502": - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - description: 'gateway_error: an unexpected error occurred' - security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - - {} - summary: triggerRiskAnalysis risk - tags: - - risk - x-speakeasy-group: risk.policies - x-speakeasy-name-override: trigger - /rpc/risk.policies.update: - put: - description: Update a risk analysis policy. - operationId: updateRiskPolicy - parameters: - allowEmptyValue: true description: API Key header in: header @@ -19036,12 +19080,6 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRiskPolicyRequestBody' - required: true responses: "200": content: @@ -19109,33 +19147,16 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: updateRiskPolicy risk + summary: getRiskPolicy risk tags: - risk x-speakeasy-group: risk.policies - x-speakeasy-name-override: update - /rpc/risk.results.byChat: + x-speakeasy-name-override: get + /rpc/risk.policies.list: get: - description: List risk results grouped by chat session for the current project. - operationId: listRiskResultsByChat + description: List all risk analysis policies for the current project. + operationId: listRiskPolicies parameters: - - allowEmptyValue: true - description: Cursor to fetch the next page of results. - in: query - name: cursor - schema: - description: Cursor to fetch the next page of results. - type: string - - allowEmptyValue: true - description: Maximum number of results to return per page. - in: query - name: limit - schema: - description: Maximum number of results to return per page. - format: int64 - maximum: 200 - minimum: 1 - type: integer - allowEmptyValue: true description: API Key header in: header @@ -19162,7 +19183,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListRiskResultsByChatResult' + $ref: '#/components/schemas/ListRiskPoliciesResult' description: OK response. "400": content: @@ -19224,51 +19245,27 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listRiskResultsByChat risk + summary: listRiskPolicies risk tags: - risk - x-speakeasy-group: risk.results - x-speakeasy-name-override: byChat + x-speakeasy-group: risk.policies + x-speakeasy-name-override: list x-speakeasy-react-hook: - name: RiskListResultsByChat - /rpc/risk.results.list: + name: RiskListPolicies + /rpc/risk.policies.status: get: - description: List risk analysis results for the current project. - operationId: listRiskResults + description: Get the analysis status of a risk policy including progress and workflow state. + operationId: getRiskPolicyStatus parameters: - allowEmptyValue: true - description: Optional policy ID to filter by. - in: query - name: policy_id - schema: - description: Optional policy ID to filter by. - format: uuid - type: string - - allowEmptyValue: true - description: Optional chat ID to filter by. + description: The policy ID. in: query - name: chat_id + name: id + required: true schema: - description: Optional chat ID to filter by. + description: The policy ID. format: uuid type: string - - allowEmptyValue: true - description: Cursor to fetch the next page of results. - in: query - name: cursor - schema: - description: Cursor to fetch the next page of results. - type: string - - allowEmptyValue: true - description: Maximum number of results to return per page. - in: query - name: limit - schema: - description: Maximum number of results to return per page. - format: int64 - maximum: 200 - minimum: 1 - type: integer - allowEmptyValue: true description: API Key header in: header @@ -19295,7 +19292,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListRiskResultsResult' + $ref: '#/components/schemas/RiskPolicyStatus' description: OK response. "400": content: @@ -19357,51 +19354,16 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listRiskResults risk + summary: getRiskPolicyStatus risk tags: - risk - x-speakeasy-group: risk.results - x-speakeasy-name-override: list - x-speakeasy-react-hook: - name: RiskListResults - /rpc/risk.results.listForAgent: - get: - description: List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim. - operationId: listRiskResultsForAgent + x-speakeasy-group: risk.policies + x-speakeasy-name-override: status + /rpc/risk.policies.trigger: + post: + description: Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message. + operationId: triggerRiskAnalysis parameters: - - allowEmptyValue: true - description: Optional policy ID to filter by. - in: query - name: policy_id - schema: - description: Optional policy ID to filter by. - format: uuid - type: string - - allowEmptyValue: true - description: Optional chat ID to filter by. - in: query - name: chat_id - schema: - description: Optional chat ID to filter by. - format: uuid - type: string - - allowEmptyValue: true - description: Cursor to fetch the next page of results. - in: query - name: cursor - schema: - description: Cursor to fetch the next page of results. - type: string - - allowEmptyValue: true - description: Maximum number of results to return per page. - in: query - name: limit - schema: - description: Maximum number of results to return per page. - format: int64 - maximum: 200 - minimum: 1 - type: integer - allowEmptyValue: true description: API Key header in: header @@ -19423,12 +19385,14 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerRiskAnalysisRequestBody' + required: true responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/ListRiskResultsForAgentResult' description: OK response. "400": content: @@ -19490,18 +19454,23 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listRiskResultsForAgent risk + summary: triggerRiskAnalysis risk tags: - risk - x-speakeasy-group: risk.results - x-speakeasy-name-override: listForAgent - x-speakeasy-react-hook: - name: RiskListResultsForAgent - /rpc/slack-apps.configure: - post: - description: Store Slack credentials (client ID, client secret, signing secret) for an app. - operationId: configureSlackApp + x-speakeasy-group: risk.policies + x-speakeasy-name-override: trigger + /rpc/risk.policies.update: + put: + description: Update a risk analysis policy. + operationId: updateRiskPolicy parameters: + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string - allowEmptyValue: true description: Session header in: header @@ -19520,14 +19489,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ConfigureSlackAppRequestBody' + $ref: '#/components/schemas/UpdateRiskPolicyRequestBody' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/SlackAppResult' + $ref: '#/components/schemas/RiskPolicy' description: OK response. "400": content: @@ -19584,20 +19553,45 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: configureSlackApp slack + summary: updateRiskPolicy risk tags: - - slack - x-speakeasy-name-override: configureSlackApp - x-speakeasy-react-hook: - name: configureSlackApp - /rpc/slack-apps.create: - post: - description: Create a new Slack app and generate its manifest. - operationId: createSlackApp + - risk + x-speakeasy-group: risk.policies + x-speakeasy-name-override: update + /rpc/risk.results.byChat: + get: + description: List risk results grouped by chat session for the current project. + operationId: listRiskResultsByChat parameters: + - allowEmptyValue: true + description: Cursor to fetch the next page of results. + in: query + name: cursor + schema: + description: Cursor to fetch the next page of results. + type: string + - allowEmptyValue: true + description: Maximum number of results to return per page. + in: query + name: limit + schema: + description: Maximum number of results to return per page. + format: int64 + maximum: 200 + minimum: 1 + type: integer + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string - allowEmptyValue: true description: Session header in: header @@ -19612,18 +19606,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSlackAppRequestBody' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/CreateSlackAppResult' + $ref: '#/components/schemas/ListRiskResultsByChatResult' description: OK response. "400": content: @@ -19680,29 +19668,100 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: createSlackApp slack + summary: listRiskResultsByChat risk tags: - - slack - x-speakeasy-name-override: createSlackApp + - risk + x-speakeasy-group: risk.results + x-speakeasy-name-override: byChat x-speakeasy-react-hook: - name: createSlackApp - /rpc/slack-apps.delete: - delete: - description: Soft-delete a Slack app. - operationId: deleteSlackApp + name: RiskListResultsByChat + /rpc/risk.results.list: + get: + description: List risk analysis results for the current project. + operationId: listRiskResults parameters: - allowEmptyValue: true - description: The Slack app ID + description: Optional policy ID to filter by. in: query - name: id - required: true + name: policy_id schema: - description: The Slack app ID + description: Optional policy ID to filter by. + format: uuid + type: string + - allowEmptyValue: true + description: Optional chat ID to filter by. + in: query + name: chat_id + schema: + description: Optional chat ID to filter by. format: uuid type: string + - allowEmptyValue: true + description: Optional rule category key to filter by (e.g. secrets, pii, financial). + in: query + name: category + schema: + description: Optional rule category key to filter by (e.g. secrets, pii, financial). + type: string + - allowEmptyValue: true + description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + in: query + name: rule_id + schema: + description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + type: string + - allowEmptyValue: true + description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. + in: query + name: unique_match + schema: + description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. + type: boolean + - allowEmptyValue: true + description: Filter results to messages created at or after this timestamp (ISO 8601). + in: query + name: from + schema: + description: Filter results to messages created at or after this timestamp (ISO 8601). + format: date-time + type: string + - allowEmptyValue: true + description: Filter results to messages created strictly before this timestamp (ISO 8601). + in: query + name: to + schema: + description: Filter results to messages created strictly before this timestamp (ISO 8601). + format: date-time + type: string + - allowEmptyValue: true + description: Cursor to fetch the next page of results. + in: query + name: cursor + schema: + description: Cursor to fetch the next page of results. + type: string + - allowEmptyValue: true + description: Maximum number of results to return per page. + in: query + name: limit + schema: + description: Maximum number of results to return per page. + format: int64 + maximum: 200 + minimum: 1 + type: integer + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string - allowEmptyValue: true description: Session header in: header @@ -19718,8 +19777,12 @@ paths: description: project header type: string responses: - "204": - description: No Content response. + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ListRiskResultsResult' + description: OK response. "400": content: application/json: @@ -19775,29 +19838,63 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: deleteSlackApp slack + summary: listRiskResults risk tags: - - slack - x-speakeasy-name-override: deleteSlackApp + - risk + x-speakeasy-group: risk.results + x-speakeasy-name-override: list x-speakeasy-react-hook: - name: deleteSlackApp - /rpc/slack-apps.get: + name: RiskListResults + /rpc/risk.results.listForAgent: get: - description: Get details of a specific Slack app. - operationId: getSlackApp + description: List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim. + operationId: listRiskResultsForAgent parameters: - allowEmptyValue: true - description: The Slack app ID + description: Optional policy ID to filter by. in: query - name: id - required: true + name: policy_id schema: - description: The Slack app ID + description: Optional policy ID to filter by. + format: uuid + type: string + - allowEmptyValue: true + description: Optional chat ID to filter by. + in: query + name: chat_id + schema: + description: Optional chat ID to filter by. format: uuid type: string + - allowEmptyValue: true + description: Cursor to fetch the next page of results. + in: query + name: cursor + schema: + description: Cursor to fetch the next page of results. + type: string + - allowEmptyValue: true + description: Maximum number of results to return per page. + in: query + name: limit + schema: + description: Maximum number of results to return per page. + format: int64 + maximum: 200 + minimum: 1 + type: integer + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string - allowEmptyValue: true description: Session header in: header @@ -19817,7 +19914,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SlackAppResult' + $ref: '#/components/schemas/ListRiskResultsForAgentResult' description: OK response. "400": content: @@ -19874,19 +19971,22 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getSlackApp slack + summary: listRiskResultsForAgent risk tags: - - slack - x-speakeasy-name-override: getSlackApp + - risk + x-speakeasy-group: risk.results + x-speakeasy-name-override: listForAgent x-speakeasy-react-hook: - name: getSlackApp - /rpc/slack-apps.list: - get: - description: List Slack apps for a project. - operationId: listSlackApps + name: RiskListResultsForAgent + /rpc/slack-apps.configure: + post: + description: Store Slack credentials (client ID, client secret, signing secret) for an app. + operationId: configureSlackApp parameters: - allowEmptyValue: true description: Session header @@ -19902,12 +20002,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ConfigureSlackAppRequestBody' + required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ListSlackAppsResult' + $ref: '#/components/schemas/SlackAppResult' description: OK response. "400": content: @@ -19967,16 +20073,16 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listSlackApps slack + summary: configureSlackApp slack tags: - slack - x-speakeasy-name-override: listSlackApps + x-speakeasy-name-override: configureSlackApp x-speakeasy-react-hook: - name: listSlackApps - /rpc/slack-apps.update: - put: - description: Update a Slack app's settings. - operationId: updateSlackApp + name: configureSlackApp + /rpc/slack-apps.create: + post: + description: Create a new Slack app and generate its manifest. + operationId: createSlackApp parameters: - allowEmptyValue: true description: Session header @@ -19996,14 +20102,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateSlackAppRequestBody' + $ref: '#/components/schemas/CreateSlackAppRequestBody' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/SlackAppResult' + $ref: '#/components/schemas/CreateSlackAppResult' description: OK response. "400": content: @@ -20063,23 +20169,25 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: updateSlackApp slack + summary: createSlackApp slack tags: - slack - x-speakeasy-name-override: updateSlackApp + x-speakeasy-name-override: createSlackApp x-speakeasy-react-hook: - name: updateSlackApp - /rpc/telemetry.captureEvent: - post: - description: Capture a telemetry event and forward it to PostHog - operationId: captureEvent + name: createSlackApp + /rpc/slack-apps.delete: + delete: + description: Soft-delete a Slack app. + operationId: deleteSlackApp parameters: - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key + description: The Slack app ID + in: query + name: id + required: true schema: - description: API Key header + description: The Slack app ID + format: uuid type: string - allowEmptyValue: true description: Session header @@ -20095,25 +20203,107 @@ paths: schema: description: project header type: string + responses: + "204": + description: No Content response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + - {} + summary: deleteSlackApp slack + tags: + - slack + x-speakeasy-name-override: deleteSlackApp + x-speakeasy-react-hook: + name: deleteSlackApp + /rpc/slack-apps.get: + get: + description: Get details of a specific Slack app. + operationId: getSlackApp + parameters: - allowEmptyValue: true - description: Chat Sessions token header + description: The Slack app ID + in: query + name: id + required: true + schema: + description: The Slack app ID + format: uuid + type: string + - allowEmptyValue: true + description: Session header in: header - name: Gram-Chat-Session + name: Gram-Session schema: - description: Chat Sessions token header + description: Session header + type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CaptureEventPayload' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/CaptureEventResult' + $ref: '#/components/schemas/SlackAppResult' description: OK response. "400": content: @@ -20170,28 +20360,20 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - - chat_sessions_token_header_Gram-Chat-Session: [] - {} - summary: captureEvent telemetry + summary: getSlackApp slack tags: - - telemetry - x-speakeasy-name-override: captureEvent - /rpc/telemetry.getHooksSummary: - post: - description: Get aggregated hooks metrics grouped by server - operationId: getHooksSummary + - slack + x-speakeasy-name-override: getSlackApp + x-speakeasy-react-hook: + name: getSlackApp + /rpc/slack-apps.list: + get: + description: List Slack apps for a project. + operationId: listSlackApps parameters: - - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - allowEmptyValue: true description: Session header in: header @@ -20206,18 +20388,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/GetHooksSummaryPayload' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/GetHooksSummaryResult' + $ref: '#/components/schemas/ListSlackAppsResult' description: OK response. "400": content: @@ -20274,30 +20450,20 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getHooksSummary telemetry + summary: listSlackApps slack tags: - - telemetry - x-speakeasy-name-override: getHooksSummary + - slack + x-speakeasy-name-override: listSlackApps x-speakeasy-react-hook: - name: GetHooksSummary - type: query - /rpc/telemetry.getObservabilityOverview: - post: - description: Get observability overview metrics including time series, tool breakdowns, and summary stats - operationId: getObservabilityOverview + name: listSlackApps + /rpc/slack-apps.update: + put: + description: Update a Slack app's settings. + operationId: updateSlackApp parameters: - - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - allowEmptyValue: true description: Session header in: header @@ -20316,14 +20482,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetObservabilityOverviewPayload' + $ref: '#/components/schemas/UpdateSlackAppRequestBody' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/GetObservabilityOverviewResult' + $ref: '#/components/schemas/SlackAppResult' description: OK response. "400": content: @@ -20380,22 +20546,19 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getObservabilityOverview telemetry + summary: updateSlackApp slack tags: - - telemetry - x-speakeasy-name-override: getObservabilityOverview + - slack + x-speakeasy-name-override: updateSlackApp x-speakeasy-react-hook: - name: GetObservabilityOverview - type: query - /rpc/telemetry.getProjectMetricsSummary: + name: updateSlackApp + /rpc/telemetry.captureEvent: post: - description: Get aggregated metrics summary for an entire project - operationId: getProjectMetricsSummary + description: Capture a telemetry event and forward it to PostHog + operationId: captureEvent parameters: - allowEmptyValue: true description: API Key header @@ -20418,18 +20581,25 @@ paths: schema: description: project header type: string + - allowEmptyValue: true + description: Chat Sessions token header + in: header + name: Gram-Chat-Session + schema: + description: Chat Sessions token header + type: string requestBody: content: application/json: schema: - $ref: '#/components/schemas/GetProjectMetricsSummaryPayload' + $ref: '#/components/schemas/CaptureEventPayload' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/GetMetricsSummaryResult' + $ref: '#/components/schemas/CaptureEventResult' description: OK response. "400": content: @@ -20490,18 +20660,122 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] + - chat_sessions_token_header_Gram-Chat-Session: [] - {} - summary: getProjectMetricsSummary telemetry + summary: captureEvent telemetry tags: - telemetry - x-speakeasy-name-override: getProjectMetricsSummary + x-speakeasy-name-override: captureEvent + /rpc/telemetry.getHooksSummary: + post: + description: Get aggregated hooks metrics grouped by server + operationId: getHooksSummary + parameters: + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string + - allowEmptyValue: true + description: Session header + in: header + name: Gram-Session + schema: + description: Session header + type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetHooksSummaryPayload' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/GetHooksSummaryResult' + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + - {} + summary: getHooksSummary telemetry + tags: + - telemetry + x-speakeasy-name-override: getHooksSummary x-speakeasy-react-hook: - name: GetProjectMetricsSummary + name: GetHooksSummary type: query - /rpc/telemetry.getProjectOverview: + /rpc/telemetry.getObservabilityOverview: post: - description: Get project-level overview including total chats, tool calls, active servers/users, and top lists - operationId: getProjectOverview + description: Get observability overview metrics including time series, tool breakdowns, and summary stats + operationId: getObservabilityOverview parameters: - allowEmptyValue: true description: API Key header @@ -20528,14 +20802,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetProjectMetricsSummaryPayload' + $ref: '#/components/schemas/GetObservabilityOverviewPayload' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/GetProjectOverviewResult' + $ref: '#/components/schemas/GetObservabilityOverviewResult' description: OK response. "400": content: @@ -20597,17 +20871,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getProjectOverview telemetry + summary: getObservabilityOverview telemetry tags: - telemetry - x-speakeasy-name-override: getProjectOverview + x-speakeasy-name-override: getObservabilityOverview x-speakeasy-react-hook: - name: GetProjectOverview + name: GetObservabilityOverview type: query - /rpc/telemetry.getUserMetricsSummary: + /rpc/telemetry.getProjectMetricsSummary: post: - description: Get aggregated metrics summary grouped by user - operationId: getUserMetricsSummary + description: Get aggregated metrics summary for an entire project + operationId: getProjectMetricsSummary parameters: - allowEmptyValue: true description: API Key header @@ -20634,14 +20908,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetUserMetricsSummaryPayload' + $ref: '#/components/schemas/GetProjectMetricsSummaryPayload' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/GetUserMetricsSummaryResult' + $ref: '#/components/schemas/GetMetricsSummaryResult' description: OK response. "400": content: @@ -20703,17 +20977,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: getUserMetricsSummary telemetry + summary: getProjectMetricsSummary telemetry tags: - telemetry - x-speakeasy-name-override: getUserMetricsSummary + x-speakeasy-name-override: getProjectMetricsSummary x-speakeasy-react-hook: - name: GetUserMetricsSummary + name: GetProjectMetricsSummary type: query - /rpc/telemetry.listAttributeKeys: + /rpc/telemetry.getProjectOverview: post: - description: List distinct attribute keys available for filtering - operationId: listAttributeKeys + description: Get project-level overview including total chats, tool calls, active servers/users, and top lists + operationId: getProjectOverview parameters: - allowEmptyValue: true description: API Key header @@ -20747,7 +21021,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListAttributeKeysResult' + $ref: '#/components/schemas/GetProjectOverviewResult' description: OK response. "400": content: @@ -20809,17 +21083,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listAttributeKeys telemetry + summary: getProjectOverview telemetry tags: - telemetry - x-speakeasy-name-override: listAttributeKeys + x-speakeasy-name-override: getProjectOverview x-speakeasy-react-hook: - name: ListAttributeKeys + name: GetProjectOverview type: query - /rpc/telemetry.listFilterOptions: + /rpc/telemetry.getUserMetricsSummary: post: - description: List available filter options (API keys or users) for the observability overview - operationId: listFilterOptions + description: Get aggregated metrics summary grouped by user + operationId: getUserMetricsSummary parameters: - allowEmptyValue: true description: API Key header @@ -20846,14 +21120,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListFilterOptionsPayload' + $ref: '#/components/schemas/GetUserMetricsSummaryPayload' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ListFilterOptionsResult' + $ref: '#/components/schemas/GetUserMetricsSummaryResult' description: OK response. "400": content: @@ -20915,17 +21189,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listFilterOptions telemetry + summary: getUserMetricsSummary telemetry tags: - telemetry - x-speakeasy-name-override: listFilterOptions + x-speakeasy-name-override: getUserMetricsSummary x-speakeasy-react-hook: - name: ListFilterOptions + name: GetUserMetricsSummary type: query - /rpc/telemetry.listHooksTraces: + /rpc/telemetry.listAttributeKeys: post: - description: List hook traces aggregated by trace_id with user information - operationId: listHooksTraces + description: List distinct attribute keys available for filtering + operationId: listAttributeKeys parameters: - allowEmptyValue: true description: API Key header @@ -20952,14 +21226,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListHooksTracesPayload' + $ref: '#/components/schemas/GetProjectMetricsSummaryPayload' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ListHooksTracesResult' + $ref: '#/components/schemas/ListAttributeKeysResult' description: OK response. "400": content: @@ -21021,17 +21295,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: listHooksTraces telemetry + summary: listAttributeKeys telemetry tags: - telemetry - x-speakeasy-name-override: listHooksTraces + x-speakeasy-name-override: listAttributeKeys x-speakeasy-react-hook: - name: ListHooksTraces + name: ListAttributeKeys type: query - /rpc/telemetry.searchChats: + /rpc/telemetry.listFilterOptions: post: - description: Search and list chat session summaries that match a search filter - operationId: searchChats + description: List available filter options (API keys or users) for the observability overview + operationId: listFilterOptions parameters: - allowEmptyValue: true description: API Key header @@ -21058,14 +21332,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SearchChatsPayload' + $ref: '#/components/schemas/ListFilterOptionsPayload' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/SearchChatsResult' + $ref: '#/components/schemas/ListFilterOptionsResult' description: OK response. "400": content: @@ -21127,17 +21401,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: searchChats telemetry + summary: listFilterOptions telemetry tags: - telemetry - x-speakeasy-name-override: searchChats + x-speakeasy-name-override: listFilterOptions x-speakeasy-react-hook: - name: SearchChats + name: ListFilterOptions type: query - /rpc/telemetry.searchLogs: + /rpc/telemetry.listHooksTraces: post: - description: Search and list telemetry logs that match a search filter - operationId: searchLogs + description: List hook traces aggregated by trace_id with user information + operationId: listHooksTraces parameters: - allowEmptyValue: true description: API Key header @@ -21164,14 +21438,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SearchLogsPayload' + $ref: '#/components/schemas/ListHooksTracesPayload' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/SearchLogsResult' + $ref: '#/components/schemas/ListHooksTracesResult' description: OK response. "400": content: @@ -21233,16 +21507,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: searchLogs telemetry + summary: listHooksTraces telemetry tags: - telemetry - x-speakeasy-name-override: searchLogs + x-speakeasy-name-override: listHooksTraces x-speakeasy-react-hook: - name: SearchLogs - /rpc/telemetry.searchToolCalls: + name: ListHooksTraces + type: query + /rpc/telemetry.searchChats: post: - description: Search and list tool calls that match a search filter - operationId: searchToolCalls + description: Search and list chat session summaries that match a search filter + operationId: searchChats parameters: - allowEmptyValue: true description: API Key header @@ -21269,14 +21544,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SearchToolCallsPayload' + $ref: '#/components/schemas/SearchChatsPayload' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/SearchToolCallsResult' + $ref: '#/components/schemas/SearchChatsResult' description: OK response. "400": content: @@ -21338,16 +21613,17 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: searchToolCalls telemetry + summary: searchChats telemetry tags: - telemetry - x-speakeasy-name-override: searchToolCalls + x-speakeasy-name-override: searchChats x-speakeasy-react-hook: - name: SearchToolCalls - /rpc/telemetry.searchUsers: + name: SearchChats + type: query + /rpc/telemetry.searchLogs: post: - description: Search and list user usage summaries grouped by user_id or external_user_id - operationId: searchUsers + description: Search and list telemetry logs that match a search filter + operationId: searchLogs parameters: - allowEmptyValue: true description: API Key header @@ -21374,14 +21650,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SearchUsersPayload' + $ref: '#/components/schemas/SearchLogsPayload' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/SearchUsersResult' + $ref: '#/components/schemas/SearchLogsResult' description: OK response. "400": content: @@ -21443,17 +21719,227 @@ paths: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - {} - summary: searchUsers telemetry + summary: searchLogs telemetry tags: - telemetry - x-speakeasy-name-override: searchUsers + x-speakeasy-name-override: searchLogs x-speakeasy-react-hook: - name: SearchUsers - type: query - /rpc/templates.create: + name: SearchLogs + /rpc/telemetry.searchToolCalls: post: - description: Create a new prompt template. - operationId: createTemplate + description: Search and list tool calls that match a search filter + operationId: searchToolCalls + parameters: + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string + - allowEmptyValue: true + description: Session header + in: header + name: Gram-Session + schema: + description: Session header + type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SearchToolCallsPayload' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/SearchToolCallsResult' + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + - {} + summary: searchToolCalls telemetry + tags: + - telemetry + x-speakeasy-name-override: searchToolCalls + x-speakeasy-react-hook: + name: SearchToolCalls + /rpc/telemetry.searchUsers: + post: + description: Search and list user usage summaries grouped by user_id or external_user_id + operationId: searchUsers + parameters: + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string + - allowEmptyValue: true + description: Session header + in: header + name: Gram-Session + schema: + description: Session header + type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SearchUsersPayload' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/SearchUsersResult' + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + - {} + summary: searchUsers telemetry + tags: + - telemetry + x-speakeasy-name-override: searchUsers + x-speakeasy-react-hook: + name: SearchUsers + type: query + /rpc/templates.create: + post: + description: Create a new prompt template. + operationId: createTemplate parameters: - allowEmptyValue: true description: API Key header @@ -26629,14 +27115,16 @@ components: photo_url: type: string description: Avatar URL. - role_id: - type: string - description: Currently assigned role ID. + role_ids: + type: array + items: + type: string + description: All role IDs assigned to this member. required: - id - name - email - - role_id + - role_ids - joined_at AddDeploymentPackageForm: type: object @@ -26841,6 +27329,215 @@ components: - plugin_id - toolset_id - display_name + AdminListOrganizationMembersResult: + type: object + properties: + members: + type: array + items: + $ref: '#/components/schemas/AdminOrganizationMember' + description: The members of the organization. + required: + - members + AdminListOrganizationProjectsResult: + type: object + properties: + projects: + type: array + items: + $ref: '#/components/schemas/AdminProject' + description: The projects belonging to the organization. + required: + - projects + AdminListOrganizationsResult: + type: object + properties: + next_cursor: + type: string + description: Cursor for the next page; empty when exhausted. + organizations: + type: array + items: + $ref: '#/components/schemas/AdminOrganization' + description: The page of organizations. + required: + - organizations + AdminOrganization: + type: object + properties: + account_type: + type: string + description: Gram account type (e.g. free, pro, enterprise). + created_at: + type: string + description: The creation date of the organization. + format: date-time + disabled_at: + type: string + description: The time at which the organization was disabled, if any. + format: date-time + free_trial_ends_at: + type: string + description: The time at which the free trial ends. + format: date-time + free_trial_started_at: + type: string + description: The time at which the free trial started. + format: date-time + id: + type: string + description: The ID of the organization + member_count: + type: integer + description: Number of active members in the organization. + format: int64 + name: + type: string + description: The name of the organization + slug: + type: string + description: The slug of the organization + updated_at: + type: string + description: The last update date of the organization. + format: date-time + whitelisted: + type: boolean + description: Whether the organization is whitelisted for full access. + workos_id: + type: string + description: WorkOS organization ID, if linked. + description: Organization details surfaced to admin operators. + required: + - id + - name + - slug + - account_type + - whitelisted + - member_count + - created_at + - updated_at + AdminOrganizationMember: + type: object + properties: + created_at: + type: string + format: date-time + display_name: + type: string + description: User display name. + email: + type: string + description: User email address. + id: + type: string + description: User ID. + last_login: + type: string + description: The time the user last logged in, if any. + format: date-time + updated_at: + type: string + format: date-time + description: Organization member surfaced to admin operators. + required: + - id + - email + - display_name + - created_at + - updated_at + AdminProject: + type: object + properties: + created_at: + type: string + description: The creation date of the project. + format: date-time + id: + type: string + description: The ID of the project + name: + type: string + description: The name of the project + slug: + type: string + description: The slug of the project + updated_at: + type: string + description: The last update date of the project. + format: date-time + description: Project summary surfaced to admin operators. + required: + - id + - name + - slug + - created_at + - updated_at + AdminProjectDetail: + type: object + properties: + api_key_count: + type: integer + description: Number of active API keys in the project. + format: int64 + assistant_count: + type: integer + description: Number of active assistants in the project. + format: int64 + created_at: + type: string + format: date-time + deployment_count: + type: integer + description: Total number of deployments in the project. + format: int64 + environment_count: + type: integer + description: Number of active environments in the project. + format: int64 + functions_runner_version: + type: string + description: Functions runner version pin, if set. + http_tool_count: + type: integer + description: Number of active HTTP tool definitions in the project. + format: int64 + id: + type: string + description: Project ID. + logo_asset_id: + type: string + description: Project logo asset ID, if set. + name: + type: string + description: Project name. + organization_id: + type: string + description: Owning organization ID. + slug: + type: string + description: Project slug. + toolset_count: + type: integer + description: Number of active toolsets in the project. + format: int64 + updated_at: + type: string + format: date-time + description: Full project detail surfaced to admin operators, including aggregated counts of child resources. + required: + - id + - name + - slug + - organization_id + - toolset_count + - deployment_count + - http_tool_count + - environment_count + - api_key_count + - assistant_count + - created_at + - updated_at AllowedOrigin: type: object properties: @@ -27596,6 +28293,10 @@ components: type: integer description: The number of messages in the chat format: int64 + risk_findings_count: + type: integer + description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. + format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -27697,6 +28398,10 @@ components: type: integer description: The number of messages in the chat format: int64 + risk_findings_count: + type: integer + description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. + format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -27759,6 +28464,10 @@ components: items: $ref: '#/components/schemas/ChatResolution' description: List of resolutions for this chat + risk_findings_count: + type: integer + description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. + format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -29153,6 +29862,44 @@ components: - created_at - updated_at - is_updating + CustomDomainMcpEndpoint: + type: object + properties: + id: + type: string + description: The ID of the MCP endpoint + format: uuid + mcp_server_id: + type: string + description: The ID of the parent MCP server + format: uuid + mcp_server_name: + type: string + description: The display name of the parent MCP server. May be empty if the parent has no configured name. + mcp_server_slug: + type: string + description: The url-friendly slug of the parent MCP server. May be empty if the parent has no configured slug. + project_id: + type: string + description: The ID of the project the endpoint belongs to + format: uuid + project_name: + type: string + description: The display name of the project the endpoint belongs to + project_slug: + type: string + description: The url-friendly slug of the project the endpoint belongs to + slug: + type: string + description: The endpoint slug + description: An MCP endpoint registered under a custom domain, with its parent MCP server and project denormalised for display in the dashboard's delete-impact preview. + required: + - id + - slug + - project_id + - project_name + - project_slug + - mcp_server_id DeleteGlobalToolVariationForm: type: object properties: @@ -31411,6 +32158,16 @@ components: required: - chats - total + ListCustomDomainMcpEndpointsResult: + type: object + properties: + mcp_endpoints: + type: array + items: + $ref: '#/components/schemas/CustomDomainMcpEndpoint' + description: Result of listing the MCP endpoints registered under an organization's custom domain. + required: + - mcp_endpoints ListDeploymentForm: type: object properties: @@ -33449,13 +34206,6 @@ components: - policy - sort_order - created_at - PokeResponseBody: - type: object - properties: - ok: - type: boolean - required: - - ok Project: type: object properties: @@ -34382,6 +35132,52 @@ components: description: Whether the prompt-injection ML classifier is configured on this server. required: - pi_classifier_enabled + RiskCategoriesResult: + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/RiskCategoryDefinition' + description: Categories in classification-priority order. The last entry is the 'custom' fallback for findings that match none of the others. + description: Canonical risk category definitions used to classify findings, in classification-priority order. Consumers should iterate in order and pick the first match. + required: + - categories + RiskCategoryDefinition: + type: object + properties: + description: + type: string + description: Plain-English description of what this category covers. + icon: + type: string + description: Lucide icon name suggested for this category. + key: + type: string + description: Canonical category key (e.g. 'secrets', 'pii', 'shadow_mcp'). + label: + type: string + description: Human-readable category label for UI rendering. + rule_id_prefix: + type: string + description: When non-empty, findings whose rule_id starts with this prefix belong to this category. The catch-all for a family (e.g. 'pii.'). + rule_ids: + type: array + items: + type: string + description: When non-empty, findings whose rule_id is in this exact list belong to this category. Checked before rule_id_prefix. + source: + type: string + description: When non-empty, findings whose source equals this value belong to this category. + description: One canonical risk category and how findings are classified into it. + required: + - key + - label + - description + - icon + - source + - rule_ids + - rule_id_prefix RiskChatSummary: type: object properties: @@ -34457,6 +35253,11 @@ components: items: $ref: '#/components/schemas/RiskOverviewCategory' description: Top policy categories by finding count. + top_rules: + type: array + items: + $ref: '#/components/schemas/RiskRuleBreakdownEntry' + description: Top rule_ids by finding count. top_users: type: array items: @@ -34471,6 +35272,7 @@ components: - active_policies - top_categories - top_users + - top_rules - time_series_findings RiskOverviewTimeSeriesFinding: type: object @@ -34496,12 +35298,16 @@ components: email: type: string description: User email, or Unknown user when unavailable. + external_user_id: + type: string + description: External user identifier as recorded on chats, when known. Empty when the finding cannot be attributed to an external user. findings: type: integer description: Finding count for this user. format: int64 required: - email + - external_user_id - findings RiskPolicy: type: object @@ -34758,6 +35564,87 @@ components: - created_at - match_redacted - position_known + RiskRuleBreakdownEntry: + type: object + properties: + findings: + type: integer + description: Finding count for this rule within the window. + format: int64 + rule_id: + type: string + description: Rule identifier (e.g. 'secret.aws-access-key'). Empty when the finding has no rule_id (treat as 'unspecified'). + source: + type: string + description: Source bucket the rule belongs to (gitleaks, presidio, etc.) for label/icon resolution on the dashboard. + required: + - rule_id + - source + - findings + RiskRuleBreakdownResult: + type: object + properties: + category: + type: string + description: Category the breakdown is scoped to. + from: + type: string + description: Inclusive start of the window used. + format: date-time + rules: + type: array + items: + $ref: '#/components/schemas/RiskRuleBreakdownEntry' + description: Rules in this category, ordered by finding count descending. + to: + type: string + description: Exclusive end of the window used. + format: date-time + total: + type: integer + description: Total findings across all rules in this category and window. + format: int64 + required: + - from + - to + - category + - rules + - total + RiskUserBreakdownResult: + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/RiskOverviewCategory' + description: Category breakdown for this user, ordered by finding count descending. + external_user_id: + type: string + description: External user the breakdown is scoped to. + findings: + type: integer + description: Total findings for this user in the window. + format: int64 + from: + type: string + description: Inclusive start of the window used. + format: date-time + rules: + type: array + items: + $ref: '#/components/schemas/RiskRuleBreakdownEntry' + description: Rule_id breakdown for this user, ordered by finding count descending. + to: + type: string + description: Exclusive end of the window used. + format: date-time + required: + - from + - to + - external_user_id + - findings + - categories + - rules Role: type: object properties: @@ -36944,18 +37831,20 @@ components: required: - id - visibility - UpdateMemberRoleForm: + UpdateMemberRolesForm: type: object properties: - role_id: - type: string - description: The new role ID to assign. + role_ids: + type: array + items: + type: string + description: The role IDs to assign. Replaces all existing role assignments. user_id: type: string description: The user ID to update. required: - user_id - - role_id + - role_ids UpdateOAuthProxyServerForm: type: object properties: @@ -36978,6 +37867,20 @@ components: $ref: '#/components/schemas/OAuthProxyServerUpdateForm' required: - oauth_proxy_server + UpdateOrganizationRequestBody: + type: object + properties: + account_type: + type: string + description: New gram_account_type (e.g. free, pro, enterprise). + id: + type: string + description: Organization ID. + whitelisted: + type: boolean + description: New whitelisted flag. + required: + - id UpdatePackageForm: type: object properties: @@ -38076,6 +38979,11 @@ components: - verified - message securitySchemes: + admin_auth_header_Authorization: + type: apiKey + description: Admin session auth for admin endpoints. Cookie-only credential; session is validated against Google on every request. + name: Authorization + in: header apikey_header_Authorization: type: apiKey description: key based auth. @@ -38108,7 +39016,7 @@ tags: - name: access description: Manage roles, team member access control, and authorization challenge events. - name: admin - description: Operational endpoints for administrative tasks. + description: Operations supporting admin tasks, protected by Google workspace auth. - name: assets description: Manages assets used by Gram projects. - name: assistantMemories diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 486a34ced1..5d3438d294 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -14,7 +14,7 @@ targets: sourceRevisionDigest: sha256:ff26cf6fe2b783e3957d938ce1bfa06663d2cc78ab25a89c9f873cb3db23de15 sourceBlobDigest: sha256:c7f21640b5d998d4d1635fd4506e943031e25c1354d36fa21bf0bed2385cf91c codeSamplesNamespace: gram-api-description-typescript-code-samples - codeSamplesRevisionDigest: sha256:254a35c169907ea2740dd02d43e2a72d7cefeafb5f5d07125bf12f75e8c8b5db + codeSamplesRevisionDigest: sha256:dfe824dcb045b67c3d505b5af576c90d3fc1188473c05d092505aee956d145d6 workflow: workflowVersion: 1.0.0 speakeasyVersion: pinned diff --git a/client/sdk/.speakeasy/gen.lock b/client/sdk/.speakeasy/gen.lock index 7c25393cae..216744e72b 100644 --- a/client/sdk/.speakeasy/gen.lock +++ b/client/sdk/.speakeasy/gen.lock @@ -1,7 +1,7 @@ lockVersion: 2.0.0 id: 0e7a6274-2092-40cd-9586-9415c6655c64 management: - docChecksum: f3c175b86421fc1da46287be7b31dd14 + docChecksum: e8d7384e3065c483e35e9e4019e3b821 docVersion: 0.0.1 speakeasyVersion: 1.761.5 generationVersion: 2.879.13 @@ -73,7 +73,7 @@ trackedFiles: docs/lib/utils/retryconfig.md: last_write_checksum: sha1:bc4454e196fcd219f5a78da690375a884f5ed07b docs/models/components/accessmember.md: - last_write_checksum: sha1:3054da106d66228a7be03e78be7f69086768e701 + last_write_checksum: sha1:389e259ed7a37da6fd946b3af5721ded752e604b docs/models/components/action.md: last_write_checksum: sha1:66ce1fb4ea555bc6494786b035454529d311d883 docs/models/components/adddeploymentpackageform.md: @@ -141,13 +141,13 @@ trackedFiles: docs/models/components/challengeresolutionresolutiontype.md: last_write_checksum: sha1:16b41a0d2e48e14d61e82ae01899bb393db826c3 docs/models/components/chat.md: - last_write_checksum: sha1:32642a251ae24251702ff26fdd0aa32a14b2763a + last_write_checksum: sha1:b4c7c0c9f383472a6ef79c82756b3e3d4eb821e3 docs/models/components/chatmessage.md: last_write_checksum: sha1:0d8a81d4c4f0d1f45ae7c5ca78a66be74bf7d74d docs/models/components/chatoverview.md: - last_write_checksum: sha1:c4e133a5f7e54105e65828552f5fbc65c24e7e0d + last_write_checksum: sha1:4b46717d1ff26e7148134c618c4dd040cfda1c01 docs/models/components/chatoverviewwithresolutions.md: - last_write_checksum: sha1:c1b39df1207cb6476230ca6710e85e1bc23c06bd + last_write_checksum: sha1:1812d47978188317decfa78f42dec811246d9e93 docs/models/components/chatresolution.md: last_write_checksum: sha1:f056a2c0377fd38d04bc53c8a3ebe45ede6abff2 docs/models/components/chatsummary.md: @@ -254,6 +254,8 @@ trackedFiles: last_write_checksum: sha1:bd57d178784c1f505ca00b2d9f1c502a136c5f06 docs/models/components/customdomain.md: last_write_checksum: sha1:408cf80dec9f85399ba97808d4742548dc857798 + docs/models/components/customdomainmcpendpoint.md: + last_write_checksum: sha1:617d60e0c7ecb67914f505e0ac62966aab59cfb9 docs/models/components/deleteglobaltoolvariationresult.md: last_write_checksum: sha1:04dce9a78844146d01af0010e5af8cd64c155a00 docs/models/components/deleterequestbody.md: @@ -430,6 +432,8 @@ trackedFiles: last_write_checksum: sha1:3b302bfbd5a1a3a56e02091da748dcf7d5b90522 docs/models/components/listchatswithresolutionsresult.md: last_write_checksum: sha1:b40cd5b165fd356bfa92708332fd97ba46038b5b + docs/models/components/listcustomdomainmcpendpointsresult.md: + last_write_checksum: sha1:6920209974248043f2d06294ee53e01f6d61f507 docs/models/components/listdeploymentresult.md: last_write_checksum: sha1:e81f46e1358dfcee125fcfb93dfb636b707be998 docs/models/components/listenvironmentsresult.md: @@ -455,7 +459,7 @@ trackedFiles: docs/models/components/listmcpserversresult.md: last_write_checksum: sha1:b405b0f206e6a0c9e0d4b8a1a0e7415de7bb5f2a docs/models/components/listmembersresult.md: - last_write_checksum: sha1:3ff50166211f061c4785fad224dc518f644e3309 + last_write_checksum: sha1:8d30ed2359baaa8ddda4ca408b22a52d33cfc1f2 docs/models/components/listpackagesresult.md: last_write_checksum: sha1:cb359e2921071954d7b35a3897ae94db823311c4 docs/models/components/listpluginsresult.md: @@ -732,16 +736,20 @@ trackedFiles: last_write_checksum: sha1:0c3d3b8bffe28ce8638776c1291b8b322baea905 docs/models/components/riskcapabilitiesresult.md: last_write_checksum: sha1:ee4f73c022688e47355eaa01687064b0336b923b + docs/models/components/riskcategoriesresult.md: + last_write_checksum: sha1:6d7d4bac7d9f678255261f155a7f6af1d57b8c80 + docs/models/components/riskcategorydefinition.md: + last_write_checksum: sha1:dfe72f07e056ee19e02818550e520ea862ed00c9 docs/models/components/riskchatsummary.md: last_write_checksum: sha1:63b23b161264d0bacab921bbde2e8e590477e71f docs/models/components/riskoverviewcategory.md: last_write_checksum: sha1:55aedc1ad4b6702d6e8c2a6886d22ecfe7b025a3 docs/models/components/riskoverviewresult.md: - last_write_checksum: sha1:bd920a518dafec7c3594030ebf2fc6df5ca2ce66 + last_write_checksum: sha1:e0b68096b53585d1f4237f1b6d03ca31b53af964 docs/models/components/riskoverviewtimeseriesfinding.md: last_write_checksum: sha1:0afdaa6e2fcd1ae1b74f06cac2286d58a0364544 docs/models/components/riskoverviewuser.md: - last_write_checksum: sha1:fefdb84d322735025c450bec24a71ade4c5e1ee6 + last_write_checksum: sha1:e27f5822bf1197b237ac5f37aab0c8d439d3dfa0 docs/models/components/riskpolicy.md: last_write_checksum: sha1:dfe5eb39e4b2ac25657f4901c9cc8128ae2f9bcf docs/models/components/riskpolicyaction.md: @@ -752,6 +760,12 @@ trackedFiles: last_write_checksum: sha1:1511f98efefb09c1e0e2101714341c63c20af4b3 docs/models/components/riskresultredacted.md: last_write_checksum: sha1:cfdb770f782f1f2087f16d84428334931e22502a + docs/models/components/riskrulebreakdownentry.md: + last_write_checksum: sha1:aef2c541f251a072a6dc773df40baadfb8041be7 + docs/models/components/riskrulebreakdownresult.md: + last_write_checksum: sha1:c1e2229fa35d47b5a96d056c40f66ea1fdb6d2ff + docs/models/components/riskuserbreakdownresult.md: + last_write_checksum: sha1:c2aca44d9079416a4a520e104fe7f7407b877304 docs/models/components/role.md: last_write_checksum: sha1:6f03a698bdceb20b54329bc771aac9bbc5beabd6 docs/models/components/rolegrant.md: @@ -930,8 +944,8 @@ trackedFiles: last_write_checksum: sha1:6ee81fcb0d2881ca3e9d848097797d283b25f130 docs/models/components/updatemcpserverformvisibility.md: last_write_checksum: sha1:c533d738ab4fc273f9930d0c2c696a622af7ad79 - docs/models/components/updatememberroleform.md: - last_write_checksum: sha1:fc16ab2515659459bd0f6249777a6b685b3f78d3 + docs/models/components/updatememberrolesform.md: + last_write_checksum: sha1:b7ee730cab0f74bb791dea5a981866c94aa74727 docs/models/components/updateoauthproxyserverrequestbody.md: last_write_checksum: sha1:38f9762fad603cb7142e8443eea343204faf4b88 docs/models/components/updatepackageform.md: @@ -1726,6 +1740,22 @@ trackedFiles: last_write_checksum: sha1:33563c51484c5d2d8103f58aac516643022bf5e7 docs/models/operations/getriskpolicystatussecurityoption2.md: last_write_checksum: sha1:36e282fea62f52b9d0bd7cded9cb93b11651cbe5 + docs/models/operations/getriskrulebreakdownrequest.md: + last_write_checksum: sha1:8babfd3ca774dd3c359ffbcb507532bf7fb9562d + docs/models/operations/getriskrulebreakdownsecurity.md: + last_write_checksum: sha1:330645fd38d2eda9ddab1534df145fa8f48b514a + docs/models/operations/getriskrulebreakdownsecurityoption1.md: + last_write_checksum: sha1:0fdcb81c7d5ac05da9e25386f9fd097314914713 + docs/models/operations/getriskrulebreakdownsecurityoption2.md: + last_write_checksum: sha1:cbc51e9f5412ed789bf99d0f709bf9382287941b + docs/models/operations/getriskuserbreakdownrequest.md: + last_write_checksum: sha1:7aa647012720bf849598341d39a73aa332a78d2f + docs/models/operations/getriskuserbreakdownsecurity.md: + last_write_checksum: sha1:2b8cd3c40bd7a9ee4271cc42ea8ee8c241348f0c + docs/models/operations/getriskuserbreakdownsecurityoption1.md: + last_write_checksum: sha1:b7396b82e954e40e13acf547d48aae781e477a25 + docs/models/operations/getriskuserbreakdownsecurityoption2.md: + last_write_checksum: sha1:550e4db8a61366edff96dd9ef25a1a0cf7c81bfd docs/models/operations/getrolerequest.md: last_write_checksum: sha1:1c43a6023513f2280a60b25161106740adb42afc docs/models/operations/getrolesecurity.md: @@ -1788,6 +1818,8 @@ trackedFiles: last_write_checksum: sha1:a06c5dcb7906d3d343f7ae1e04a7a472ddcec83c docs/models/operations/getusersessionissuersecurityoption2.md: last_write_checksum: sha1:f68bfcd76ebe89e7aeefe17e93a68feec8bbef70 + docs/models/operations/hasrisk.md: + last_write_checksum: sha1:76c9013597780a0d352e7017e3408921b9d88a82 docs/models/operations/hooksnumberclauderequest.md: last_write_checksum: sha1:94e1eb49f5dd5c57ec490d1cf4d9f076e8c0f33b docs/models/operations/hooksnumbercodexrequest.md: @@ -1875,7 +1907,7 @@ trackedFiles: docs/models/operations/listchatssecurityoption2.md: last_write_checksum: sha1:ac4329bd5c3d3cd40d37cbce5ac96671d710c3cc docs/models/operations/listchatswithresolutionsrequest.md: - last_write_checksum: sha1:56204d35c89b8e6d9c95a1dc1cede3c30e426181 + last_write_checksum: sha1:049f8309f912e56df137041da45d037b460ff767 docs/models/operations/listchatswithresolutionssecurity.md: last_write_checksum: sha1:7e130e49b8de4408cc9f7dc45f57459f9789ef64 docs/models/operations/listchatswithresolutionssecurityoption1.md: @@ -1890,6 +1922,10 @@ trackedFiles: last_write_checksum: sha1:bedf19038e5e84e5321809bb7c18c631bc47edca docs/models/operations/listcollectionssecurity.md: last_write_checksum: sha1:411dc2a8f76dc831ca724e2aadb82f2c41d45b39 + docs/models/operations/listcustomdomainmcpendpointsrequest.md: + last_write_checksum: sha1:51760213f9a586d0a3304be63490ad5a423577ae + docs/models/operations/listcustomdomainmcpendpointssecurity.md: + last_write_checksum: sha1:34db343c439215cc369c2deb246db60e53a13fc3 docs/models/operations/listdeploymentsrequest.md: last_write_checksum: sha1:fd4e1ce28cb917070b9bcbdb697464db94e567d2 docs/models/operations/listdeploymentssecurity.md: @@ -2036,6 +2072,14 @@ trackedFiles: last_write_checksum: sha1:d21b421dcdb3a6241a13edef03b991e7030b63f6 docs/models/operations/listresourcessecurity.md: last_write_checksum: sha1:cf8b54d391f1bb30b369d2657ea73d8a5cff5042 + docs/models/operations/listriskcategoriesrequest.md: + last_write_checksum: sha1:59f5f20a01ce7634b14788894dd12f2611cb498b + docs/models/operations/listriskcategoriessecurity.md: + last_write_checksum: sha1:9dd391751d247674e4594f63f43e21884764b2c5 + docs/models/operations/listriskcategoriessecurityoption1.md: + last_write_checksum: sha1:7ec7f3c3d56077fb296d6c03922417e1d3ebff1d + docs/models/operations/listriskcategoriessecurityoption2.md: + last_write_checksum: sha1:6a2be405efe6d58bbf6df09a8e067b57e46c6987 docs/models/operations/listriskpoliciesrequest.md: last_write_checksum: sha1:a8d03ac4d051ffaef9813cd808784ebbe038a703 docs/models/operations/listriskpoliciessecurity.md: @@ -2061,7 +2105,7 @@ trackedFiles: docs/models/operations/listriskresultsforagentsecurityoption2.md: last_write_checksum: sha1:172155ce71713ba6e56d2df88e17d924899325ba docs/models/operations/listriskresultsrequest.md: - last_write_checksum: sha1:f56866b8cb675b9137a7ab70eac01650de6d9198 + last_write_checksum: sha1:ea77bd1e744d66dff0abbd8f4ce571a835e2f1af docs/models/operations/listriskresultssecurity.md: last_write_checksum: sha1:d9f80b63da3e50953ab93a07dd1e54cca5068750 docs/models/operations/listriskresultssecurityoption1.md: @@ -2508,10 +2552,10 @@ trackedFiles: last_write_checksum: sha1:9e7aa6c1dde83c6f0986060d31babb129717c8d6 docs/models/operations/updatemcpserversecurityoption2.md: last_write_checksum: sha1:d8475411d43db4aa46b60a88063b6595cb555ef1 - docs/models/operations/updatememberrolerequest.md: - last_write_checksum: sha1:4990de52bd7e6c2091b9a4180b6580db70aafaba - docs/models/operations/updatememberrolesecurity.md: - last_write_checksum: sha1:b8c1a631b77e111380bda55e33cb31ff0f6fa4b7 + docs/models/operations/updatememberrolesrequest.md: + last_write_checksum: sha1:2655ccdaa09a935c7c9d8e98e5736c5218b414fe + docs/models/operations/updatememberrolessecurity.md: + last_write_checksum: sha1:0d3bbed60571b2053f5f2c2c5d303a9139c503f3 docs/models/operations/updateoauthproxyserverrequest.md: last_write_checksum: sha1:275e690e26084dfcb020d87dacf35cf07a2c796b docs/models/operations/updateoauthproxyserversecurity.md: @@ -2681,7 +2725,7 @@ trackedFiles: docs/models/operations/verifyremotemcpurlsecurityoption2.md: last_write_checksum: sha1:d7327bb7bc7d90ea3fb3593531e041e6c9fc4f9e docs/sdks/access/README.md: - last_write_checksum: sha1:c50ea3f9ce0e29ef04c31c8a4e4ef695d0c2fa30 + last_write_checksum: sha1:f0d4f30b830de51eb669ba521b8854c94dd822af docs/sdks/approvals/README.md: last_write_checksum: sha1:db8e7e38d1bb7b98ece0f26752fc0b25cc20c5d0 docs/sdks/assets/README.md: @@ -2696,6 +2740,8 @@ trackedFiles: last_write_checksum: sha1:18384a8309d0bb0622755466208f0a551404762f docs/sdks/capabilities/README.md: last_write_checksum: sha1:5712626a022779074db281c031f7d655aeaebc60 + docs/sdks/categories/README.md: + last_write_checksum: sha1:1c455de965567c85a0f47659a2ca4913f6c560aa docs/sdks/chat/README.md: last_write_checksum: sha1:ba31f10b9d2c97033ce9aa2c0bc5abab9658e474 docs/sdks/chatsessions/README.md: @@ -2705,7 +2751,7 @@ trackedFiles: docs/sdks/deployments/README.md: last_write_checksum: sha1:79dfcf6725b753739d1b9fd7ce1cd0aad3503c9a docs/sdks/domains/README.md: - last_write_checksum: sha1:6d05136dac464dac02da4ba3a2e70fad6556ed32 + last_write_checksum: sha1:52466ad60c72aac1ec86ae9c1b37b661faa7d009 docs/sdks/environments/README.md: last_write_checksum: sha1:6e3cf385846dc2b2da70e4bb9101ef11e01126a9 docs/sdks/external/README.md: @@ -2735,7 +2781,7 @@ trackedFiles: docs/sdks/otelforwarding/README.md: last_write_checksum: sha1:9599fbb87a1e733dbaf6180a1602c3ed20e46953 docs/sdks/overview/README.md: - last_write_checksum: sha1:e3a06275734c91dc4a75a5325aaf40042fb9fb91 + last_write_checksum: sha1:4f11b734c3192b06e98d626ec3a843e3c9ae1418 docs/sdks/packages/README.md: last_write_checksum: sha1:630727b17ae78739629705da27f894236bba7ad0 docs/sdks/plugins/README.md: @@ -2836,8 +2882,8 @@ trackedFiles: last_write_checksum: sha1:1ad64e3abc6903cae51f27d132504002ba9c94e9 src/funcs/accessResolveChallenge.ts: last_write_checksum: sha1:f371bbe148c7c16e2735b2726bf5a75488623249 - src/funcs/accessUpdateMemberRole.ts: - last_write_checksum: sha1:76240cb7550931e33b9dc1fc7c4cc911fd45baf4 + src/funcs/accessUpdateMemberRoles.ts: + last_write_checksum: sha1:3e1390d03064f971f9eaa44f8403ea94eac297d6 src/funcs/accessUpdateRole.ts: last_write_checksum: sha1:193098018d2aeb87f22b9fc4df35fa5465244b29 src/funcs/assetsCreateSignedChatAttachmentURL.ts: @@ -2947,7 +2993,7 @@ trackedFiles: last_write_checksum: sha1:52c467e5b7457addcc83ab385f7511f89195e165 pristine_git_object: 814ef1470b3208dac27bc0c097002de03dbda395 src/funcs/chatListChatsWithResolutions.ts: - last_write_checksum: sha1:b9ecda1c1c2329654d44c165c71582a43ae8b02d + last_write_checksum: sha1:7407dc429453e0cc5a7b86add1a899846a718f45 src/funcs/chatLoad.ts: id: 79e579c74f00 last_write_checksum: sha1:9f8e1b2b8dbcffa33bbf2a8d46a5acc4a0964512 @@ -3016,6 +3062,8 @@ trackedFiles: id: 9222d7e936ac last_write_checksum: sha1:e82bca882857fbd51f1e4c334da4d11f0db3c505 pristine_git_object: a5e829590d65db1bb25b208dc447086c09266fb6 + src/funcs/domainsListMcpEndpoints.ts: + last_write_checksum: sha1:075aab4773e69c0e084e006c97a5c4b97b0236c8 src/funcs/domainsRegisterDomain.ts: id: 2ee4ec7f6d91 last_write_checksum: sha1:6cbd4ba2c70d2c5c8d306c56128be8bea9a46255 @@ -3312,8 +3360,14 @@ trackedFiles: last_write_checksum: sha1:43468cc19f1b23bcb72a06635452e53c1607fefb src/funcs/riskCapabilitiesGet.ts: last_write_checksum: sha1:a87b56bd3f8a7a5b473ee6d7a0f128aae3d8b22d + src/funcs/riskCategoriesList.ts: + last_write_checksum: sha1:264faa0baa71ef4bde67cb85c901a3cbfd725040 src/funcs/riskOverviewGet.ts: last_write_checksum: sha1:10dc0bdfc2d651c3b001ddb50ce4fe7c0a9a2307 + src/funcs/riskOverviewRules.ts: + last_write_checksum: sha1:82c067707b4b746103da35ad0e8099186d7def06 + src/funcs/riskOverviewUserBreakdown.ts: + last_write_checksum: sha1:782c399244be30dde9b02e52d53a3f0f27cd230a src/funcs/riskPoliciesCreate.ts: last_write_checksum: sha1:d548436503ebb9b176d75d6726928685d2f7f122 src/funcs/riskPoliciesDelete.ts: @@ -3331,7 +3385,7 @@ trackedFiles: src/funcs/riskResultsByChat.ts: last_write_checksum: sha1:f7d08096a2f620fa96470b83b8a47d483c202da7 src/funcs/riskResultsList.ts: - last_write_checksum: sha1:53d54dcfaa97cae9af4dd99ec601132591533a58 + last_write_checksum: sha1:916d0c362f42196c6b9c6df262275743384317db src/funcs/riskResultsListForAgent.ts: last_write_checksum: sha1:9724df484a7e93e1c4adb50f0bd3d41c2b93a940 src/funcs/slackConfigureSlackApp.ts: @@ -3607,7 +3661,7 @@ trackedFiles: last_write_checksum: sha1:3bceadd74bf0b31adf13eb06b7531077c3e07d65 pristine_git_object: 0605023172a29aae5811f93c479bed942d98dcb4 src/models/components/accessmember.ts: - last_write_checksum: sha1:8688f34f45c5de02b049a8c31c69f43398e1c7ae + last_write_checksum: sha1:ae8a79e74e61fa90905ee5b64109b5eed104ace4 src/models/components/adddeploymentpackageform.ts: id: 73a7fe3afa81 last_write_checksum: sha1:a11950f515b9e570296047d57457fb3a6ac27360 @@ -3680,7 +3734,7 @@ trackedFiles: last_write_checksum: sha1:3eee5fef5022dacd6465f10a32bc64d2c8a5d42d src/models/components/chat.ts: id: 9ced5127d17b - last_write_checksum: sha1:108b73cd523f5ec480b55de974397968082fef59 + last_write_checksum: sha1:a5ecd7d554717c3f13081da7cad580cbd2c228b4 pristine_git_object: d74d2ff627fec7af63710786888c09ce919dbf87 src/models/components/chatmessage.ts: id: 64060926ed56 @@ -3688,10 +3742,10 @@ trackedFiles: pristine_git_object: 9bdc3bfc1f7458c0044bb61b2382f8301c0828bf src/models/components/chatoverview.ts: id: b060f6650726 - last_write_checksum: sha1:746a5ee6e0dcd21a36e18d4eee702c17953fa79a + last_write_checksum: sha1:3b6ac49ef8daabc38bf720571294d2f18592aae4 pristine_git_object: 60c3257be0907ff0b08bb4ee07a7dd6e300350be src/models/components/chatoverviewwithresolutions.ts: - last_write_checksum: sha1:e03e62f5e0adf2aa446fc9b83ef3f910ab85eb92 + last_write_checksum: sha1:6304ecdeb03300d83f8e0cac3f7d49e175ce1f2a src/models/components/chatresolution.ts: last_write_checksum: sha1:9084f3031124e2ab8ef5698a96e7a5a5f43bf71b src/models/components/chatsummary.ts: @@ -3816,6 +3870,8 @@ trackedFiles: id: 0931e77e04a5 last_write_checksum: sha1:8793582a898d08c48da8a062952def456132e664 pristine_git_object: 525b19a5bfc890afabcef24db102709e77cb6372 + src/models/components/customdomainmcpendpoint.ts: + last_write_checksum: sha1:f8efac77a26df7a14f5cdbbbd8c81f9ef7b13ab2 src/models/components/deleteglobaltoolvariationresult.ts: id: 3156d841fa22 last_write_checksum: sha1:b1b651c14d4f90bf88183b9936c52d9e01bf42c8 @@ -3998,7 +4054,7 @@ trackedFiles: pristine_git_object: a6f415c341273d2f679cbaa39ea48eaede35f633 src/models/components/index.ts: id: 0aa842dce54d - last_write_checksum: sha1:349ea48a216ee6b0996d1c19e2f0ad7978ce2838 + last_write_checksum: sha1:36359f55eb59eb0b16203c3d44b7b12c7975a9df pristine_git_object: 4c964f216a07beb3007a26774ce7bdaa48c9f74c src/models/components/inforesponsebody.ts: id: a1447891c5a4 @@ -4056,6 +4112,8 @@ trackedFiles: pristine_git_object: bebdca38f9f3c4f2a151d86cbbdf2494e408bef7 src/models/components/listchatswithresolutionsresult.ts: last_write_checksum: sha1:729162abc369405bb22c3529f89449eeaac67de1 + src/models/components/listcustomdomainmcpendpointsresult.ts: + last_write_checksum: sha1:f2e18dceef5e94ae4634359d433f2936f499b132 src/models/components/listdeploymentresult.ts: id: 928cd071711c last_write_checksum: sha1:2745c0cb90bdf6d908831767a3433e845347920d @@ -4388,16 +4446,20 @@ trackedFiles: pristine_git_object: 793ba3a7716049cdd68b99eb5fcce7e64ad0234d src/models/components/riskcapabilitiesresult.ts: last_write_checksum: sha1:960dcced11bf623f1e1cf14165bcf88a181fba8f + src/models/components/riskcategoriesresult.ts: + last_write_checksum: sha1:19a7d831a6ff4fa7de698446c3ba38f5025bfb73 + src/models/components/riskcategorydefinition.ts: + last_write_checksum: sha1:6a80ac21da03dc1b56a49e8b6aed62583192d4e7 src/models/components/riskchatsummary.ts: last_write_checksum: sha1:b4c96b9a2e839bef57233d471be967ecfd80279a src/models/components/riskoverviewcategory.ts: last_write_checksum: sha1:22329e90df9b5ab55672520447c182dfb625e4da src/models/components/riskoverviewresult.ts: - last_write_checksum: sha1:cc5e34b4c10f440caf256b73d1dbcde66e4d17f3 + last_write_checksum: sha1:d56d4080a1477b32b86c68ffaa65db6356fea8a5 src/models/components/riskoverviewtimeseriesfinding.ts: last_write_checksum: sha1:82f57d664bc8ae3c93578578b1bd9ff950efbb7e src/models/components/riskoverviewuser.ts: - last_write_checksum: sha1:74874672fffd657d1803da88994122f39fded3f9 + last_write_checksum: sha1:eb4da626d8348818266f75b28ae1dac267441b5d src/models/components/riskpolicy.ts: last_write_checksum: sha1:bca84fcce8a842a32f6eb5e385407c78560206d1 src/models/components/riskpolicystatus.ts: @@ -4406,6 +4468,12 @@ trackedFiles: last_write_checksum: sha1:dfe419b7eedf5875524a1786534e0d783ddabb5d src/models/components/riskresultredacted.ts: last_write_checksum: sha1:6f3ffbc41d82e98e3f1b358306e15a2d2aaab5a9 + src/models/components/riskrulebreakdownentry.ts: + last_write_checksum: sha1:1a504cb8dc34c5139ea90058a885a339f581a2c9 + src/models/components/riskrulebreakdownresult.ts: + last_write_checksum: sha1:6a9605a763b84d7f6ebc4d1fdc5e786c11ca2de6 + src/models/components/riskuserbreakdownresult.ts: + last_write_checksum: sha1:8eb12073e8221606906bcbd25abea020551cec87 src/models/components/role.ts: last_write_checksum: sha1:fb3b36bda8162b32a2a016460bbc212483a38455 src/models/components/rolegrant.ts: @@ -4588,8 +4656,8 @@ trackedFiles: last_write_checksum: sha1:2051b085948e4af650466d7dedc524979979e7d1 src/models/components/updatemcpserverform.ts: last_write_checksum: sha1:b62874997065998668a43cf016e273a5dc835e00 - src/models/components/updatememberroleform.ts: - last_write_checksum: sha1:51b48e1eae3b41468a844cd4bc9c761d42afa0db + src/models/components/updatememberrolesform.ts: + last_write_checksum: sha1:dcf4e8903327e320122c5fb0379e7b673bb86ba3 src/models/components/updateoauthproxyserverrequestbody.ts: last_write_checksum: sha1:81954061fa03a0e0e86804d9ea2903ebeb3f2d7b src/models/components/updatepackageform.ts: @@ -5028,6 +5096,10 @@ trackedFiles: last_write_checksum: sha1:0ad4f4822f542c25a2dd2eb86d00272abb00756f src/models/operations/getriskpolicystatus.ts: last_write_checksum: sha1:3b9930142e346fab2a52d191c554ed00f95189d2 + src/models/operations/getriskrulebreakdown.ts: + last_write_checksum: sha1:4583946f769ac4231ce4ddacd6d63073cad48e9c + src/models/operations/getriskuserbreakdown.ts: + last_write_checksum: sha1:e74ad976f354475475ed1416203b39bf296e5dca src/models/operations/getrole.ts: last_write_checksum: sha1:abc068429f77a080d7d1b7f55db371b84f858760 src/models/operations/getslackapp.ts: @@ -5068,7 +5140,7 @@ trackedFiles: last_write_checksum: sha1:68a17ba4375c98a861ba8ea4838401238e9caf7e src/models/operations/index.ts: id: 0d9ffaf774d2 - last_write_checksum: sha1:7dd5ac7a32c3a1b6f68a9e9efd8ca995678f9340 + last_write_checksum: sha1:a44f470fcb0c69f639d0263364cd03aea10cd86b pristine_git_object: dfbbde8a33b65de59f2ddc44b5a1200061eeacb0 src/models/operations/integrationsnumberget.ts: id: 0417380c9c27 @@ -5105,11 +5177,13 @@ trackedFiles: last_write_checksum: sha1:a25bdedbea7ff4479e003a0939eb5488cc3a8526 pristine_git_object: ae806c76bc527b24fab19883a174e5a94f065fe2 src/models/operations/listchatswithresolutions.ts: - last_write_checksum: sha1:b55329f39189ee33dd2f18c4b24edd83f85f582c + last_write_checksum: sha1:751d9619ae6f925df35566551bdcb3f5a51b951a src/models/operations/listcollections.ts: last_write_checksum: sha1:7008055d09d615b4fe08ec3e801dc289b8cc34f3 src/models/operations/listcollectionservers.ts: last_write_checksum: sha1:3b6fb9ca041e8acee3d5c4f7c992bfbf3f5e4335 + src/models/operations/listcustomdomainmcpendpoints.ts: + last_write_checksum: sha1:cb76a4d2d37b7e8cd8f7a0e14de1ea0d0883726f src/models/operations/listdeployments.ts: id: 3c413d710db1 last_write_checksum: sha1:0ea74e63f2168802c45844df06d7b652dcbee209 @@ -5170,10 +5244,12 @@ trackedFiles: id: 4fe7b46e911f last_write_checksum: sha1:21c3d13bb096e5d799797de84857bf115f2061d4 pristine_git_object: 9da95dab09d4e1d0c08ee95c4de06840b1d26462 + src/models/operations/listriskcategories.ts: + last_write_checksum: sha1:b713c02ab62cb8399b7a7e45b035259a4a95b8b8 src/models/operations/listriskpolicies.ts: last_write_checksum: sha1:7f0b959f25ceb36e6f612a3a7d92427f4c9aa644 src/models/operations/listriskresults.ts: - last_write_checksum: sha1:e2f3e8f14430c8f4f007851c50f9773ca6e67c38 + last_write_checksum: sha1:d186b7145b6ce94a484fbd082a616acce819a2e6 src/models/operations/listriskresultsbychat.ts: last_write_checksum: sha1:e9e67cfb8e43e5a443a937d067267d2df381ab4e src/models/operations/listriskresultsforagent.ts: @@ -5374,8 +5450,8 @@ trackedFiles: last_write_checksum: sha1:1e0a5be4ef8752d5b5c1e632fe4f57fb74d0b174 src/models/operations/updatemcpserver.ts: last_write_checksum: sha1:a8ba4fcaef9ad779b9d733ee9621ecbd26d303a3 - src/models/operations/updatememberrole.ts: - last_write_checksum: sha1:7999cd1903d9ba673475602ca5e278165508f434 + src/models/operations/updatememberroles.ts: + last_write_checksum: sha1:ab5f24931c0e3697d9b8cccf448f1caea475efb3 src/models/operations/updateoauthproxyserver.ts: last_write_checksum: sha1:b0c6f4291a2ae2b179824448464fa0414c54a68c src/models/operations/updatepackage.ts: @@ -5618,6 +5694,10 @@ trackedFiles: last_write_checksum: sha1:16eb6b63cfa6691d7c713e90f4f59d315b61b764 src/react-query/createUserSessionIssuer.ts: last_write_checksum: sha1:7d2351e9bc15d5fb47e7dce949cfb6cff6cb02f0 + src/react-query/customDomainMcpEndpoints.core.ts: + last_write_checksum: sha1:029da65c2fe94ee70581fe67ce75d1cc1f973181 + src/react-query/customDomainMcpEndpoints.ts: + last_write_checksum: sha1:64bc143c89766396c4e0bbc89d5fc41ba53996aa src/react-query/deleteDomain.ts: id: 247dd372ac28 last_write_checksum: sha1:349a21aebe7c278a176b9320bc9989ddc864ec94 @@ -5840,7 +5920,7 @@ trackedFiles: last_write_checksum: sha1:4aa2ad3f103ef14ea31e605c1d9430e7ec3de3f1 src/react-query/index.ts: id: 9e975471aa65 - last_write_checksum: sha1:094ab40d4dafbffeaa6505cca4f420b575ed260a + last_write_checksum: sha1:56804c3b0fdae18ddc2a264a10bdfc8f87619365 pristine_git_object: ee9cacb2ccb4e0631e0e1fcf4e467454534d2b35 src/react-query/instance.core.ts: id: b18e0a042b11 @@ -5907,9 +5987,9 @@ trackedFiles: last_write_checksum: sha1:4296c9e2d9e0e658743349149c61fe6d88cee251 pristine_git_object: bea716c86a525c16fb766cc3d523b64bcd0e67b6 src/react-query/listChatsWithResolutions.core.ts: - last_write_checksum: sha1:44b0b122e433a1b328c1462d24f99df7b015831b + last_write_checksum: sha1:0656541a46f30121f32c59eed8e12586a2010621 src/react-query/listChatsWithResolutions.ts: - last_write_checksum: sha1:e16d86c7364818e44f0d22913e10425c68a69bad + last_write_checksum: sha1:23a0a12abf9ecb0b5fc1282c861f29a629e6081a src/react-query/listCollections.core.ts: last_write_checksum: sha1:ffbfa28d9a9edac27a4609e5e61f8c5241af6bf0 src/react-query/listCollections.ts: @@ -6204,6 +6284,10 @@ trackedFiles: last_write_checksum: sha1:417446ccb33d455ae3dd7aed1290b1e94172371f src/react-query/riskCapabilities.ts: last_write_checksum: sha1:e6f21c6dec4ed04eb89e646de127fa684997145f + src/react-query/riskCategories.core.ts: + last_write_checksum: sha1:c281a1bfc255deb6ef673431898f64ba44e6e152 + src/react-query/riskCategories.ts: + last_write_checksum: sha1:47e205aa32b5624957c4df7d361043861be74d6b src/react-query/riskCreatePolicy.ts: last_write_checksum: sha1:2d83fedbc097151e6ddbf9b7f80182ee63ae458a src/react-query/riskListPolicies.core.ts: @@ -6211,9 +6295,9 @@ trackedFiles: src/react-query/riskListPolicies.ts: last_write_checksum: sha1:74965e0fbdf603a5b8cd565cae3e8b080b35b670 src/react-query/riskListResults.core.ts: - last_write_checksum: sha1:f762a3c779ebe620b7af505219f1b14b2565aeb3 + last_write_checksum: sha1:b60459659d1ba95762812fd8f3acd42a9eccfc56 src/react-query/riskListResults.ts: - last_write_checksum: sha1:50ca4d69db00e9ad1054a838d76da72789124eef + last_write_checksum: sha1:896a52d5b51d72d0f29095a99445b356e1711b2f src/react-query/riskListResultsByChat.core.ts: last_write_checksum: sha1:3c4a55aef7a2f5c43dbd5b2a7ca607b19f73b009 src/react-query/riskListResultsByChat.ts: @@ -6244,6 +6328,14 @@ trackedFiles: last_write_checksum: sha1:9fdb2d7fa8da575cb7647eea732f40b657ad21e6 src/react-query/riskPoliciesUpdate.ts: last_write_checksum: sha1:3a389d4b7dd4e40a405a444fec22905fa633bca1 + src/react-query/riskRuleBreakdown.core.ts: + last_write_checksum: sha1:e691913aeef1951fab6b615644c91765d3ce6fa0 + src/react-query/riskRuleBreakdown.ts: + last_write_checksum: sha1:90bd93108a9af0b99ab38e994c0113ce6be5a28b + src/react-query/riskUserBreakdown.core.ts: + last_write_checksum: sha1:7c85b66341262c046ec720d4b1d210ff6f8ec836 + src/react-query/riskUserBreakdown.ts: + last_write_checksum: sha1:383f0b3ce12bc26771b348f23b31e8c6dbb5e542 src/react-query/role.core.ts: last_write_checksum: sha1:a9274b43865562043787b65fe4607e3a166879a5 src/react-query/role.ts: @@ -6388,8 +6480,8 @@ trackedFiles: last_write_checksum: sha1:a76a7bdb241bc50dcb08db286be135e6e64436ec src/react-query/updateMcpServer.ts: last_write_checksum: sha1:55eb608cb2acf6809f9c467455d246d080092b2a - src/react-query/updateMemberRole.ts: - last_write_checksum: sha1:77757f9e2c0f7a2ba89cbf34eb08435146bfd663 + src/react-query/updateMemberRoles.ts: + last_write_checksum: sha1:f751891033e18f4f3beafc8e8004e999f56d1fba src/react-query/updateOAuthProxyServer.ts: last_write_checksum: sha1:1bbcc7d5b8dedbb70cc54fe0140696b9209e8459 src/react-query/updatePackage.ts: @@ -6483,7 +6575,7 @@ trackedFiles: src/react-query/verifyRemoteMcpURL.ts: last_write_checksum: sha1:7a8b3ee3d721701d3b98ec26f6b6f3b1b1a27bd9 src/sdk/access.ts: - last_write_checksum: sha1:37c912101f3dc622efcec2d90e0c48035f557057 + last_write_checksum: sha1:77bfd863736f3e16159ae78bf748a6b284eb19ff src/sdk/approvals.ts: last_write_checksum: sha1:68c71e868a290b10f34b3d86602af6ff6eda4da6 src/sdk/assets.ts: @@ -6502,6 +6594,8 @@ trackedFiles: pristine_git_object: 44215c8408f8a7efedc98fd3a186fb20547b0622 src/sdk/capabilities.ts: last_write_checksum: sha1:7f7fb88196d0ba03d563f0d42fd681a561aceec5 + src/sdk/categories.ts: + last_write_checksum: sha1:59fa481e654b66796749e75ac7c957f288a3e35b src/sdk/chat.ts: id: c56babc22a20 last_write_checksum: sha1:29b8a3c7b5b59220b96a685e18e0eb3ef2402ca5 @@ -6518,7 +6612,7 @@ trackedFiles: pristine_git_object: 284b90dd8f08150cfa95484db193c2181c3d7f30 src/sdk/domains.ts: id: 70955e5c763b - last_write_checksum: sha1:f428878bbd2acb5aff34843cb00c05a9bbc74202 + last_write_checksum: sha1:cda01439014ad4fed909819f64c0236080109f00 pristine_git_object: 63da249b97f588639d8dc734fb9ef4f284493810 src/sdk/environments.ts: id: 5f2a4a111fa8 @@ -6567,7 +6661,7 @@ trackedFiles: src/sdk/otelforwarding.ts: last_write_checksum: sha1:bdff0a0685140d557a23b72fe543fdc8dbd95996 src/sdk/overview.ts: - last_write_checksum: sha1:f4aabf225ff648bf1a148d669933f70a24fa8912 + last_write_checksum: sha1:621c4e58757ba91d3135277bd7960ebffefebdcf src/sdk/packages.ts: id: d71e5e0d5096 last_write_checksum: sha1:cd45c1746ab2a619fb53b913e0398d80731df1dc @@ -6595,7 +6689,7 @@ trackedFiles: src/sdk/results.ts: last_write_checksum: sha1:220552d21499d1871f15ca050009d2ec7646bbad src/sdk/risk.ts: - last_write_checksum: sha1:dfecce29e026ed3023e1e015ac27a230ddb250b5 + last_write_checksum: sha1:261c2399dbdbbfacc8239736204b918637ca99dc src/sdk/sdk.ts: id: 784571af2f69 last_write_checksum: sha1:13bae5fb1873ba74f7cc2211435078fdb2683f6d @@ -9857,11 +9951,64 @@ examples: speakeasy-default-get-risk-overview: responses: "200": - application/json: {"active_policies": 705076, "findings": 312140, "flagged_sessions": 627926, "from": "2024-11-29T21:45:00.489Z", "messages_scanned": 821642, "time_series_findings": [], "to": "2025-12-13T22:42:16.392Z", "top_categories": [], "top_users": [{"email": "Ocie.Corwin@gmail.com", "findings": 58689}]} + application/json: {"active_policies": 705076, "findings": 312140, "flagged_sessions": 627926, "from": "2024-11-29T21:45:00.489Z", "messages_scanned": 821642, "time_series_findings": [], "to": "2025-12-13T22:42:16.392Z", "top_categories": [], "top_rules": [{"findings": 312140, "rule_id": "", "source": ""}], "top_users": [{"email": "Ocie.Corwin@gmail.com", "external_user_id": "", "findings": 58689}]} "400": application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} "500": application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} + updateMemberRoles: + speakeasy-default-update-member-roles: + requestBody: + application/json: {"role_ids": ["", ""], "user_id": ""} + responses: + "200": + application/json: {"email": "Burley10@yahoo.com", "id": "", "joined_at": "2025-07-12T09:13:01.198Z", "name": "", "role_ids": [""]} + "400": + application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": true} + "500": + application/json: {"fault": true, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": true} + listCustomDomainMcpEndpoints: + speakeasy-default-list-custom-domain-mcp-endpoints: + responses: + "200": + application/json: {"mcp_endpoints": []} + "400": + application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} + "500": + application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} + listRiskCategories: + speakeasy-default-list-risk-categories: + responses: + "200": + application/json: {"categories": []} + "400": + application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} + "500": + application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": true, "timeout": false} + getRiskRuleBreakdown: + speakeasy-default-get-risk-rule-breakdown: + parameters: + query: + category: "" + responses: + "200": + application/json: {"category": "", "from": "2025-10-13T05:09:28.370Z", "rules": [{"findings": 492203, "rule_id": "", "source": ""}], "to": "2025-11-24T22:28:32.298Z", "total": 167121} + "400": + application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": true} + "500": + application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": true} + getRiskUserBreakdown: + speakeasy-default-get-risk-user-breakdown: + parameters: + query: + external_user_id: "" + responses: + "200": + application/json: {"categories": [], "external_user_id": "", "findings": 301411, "from": "2024-07-23T11:57:04.397Z", "rules": [], "to": "2026-09-26T23:55:59.257Z"} + "400": + application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": false} + "500": + application/json: {"fault": false, "id": "123abc", "message": "parameter 'p' must be an integer", "name": "bad_request", "temporary": false, "timeout": false} examplesVersion: 1.0.2 generatedTests: {} generatedFiles: diff --git a/client/sdk/src/models/components/index.ts b/client/sdk/src/models/components/index.ts index 42b5c2ae80..6276d0deca 100644 --- a/client/sdk/src/models/components/index.ts +++ b/client/sdk/src/models/components/index.ts @@ -74,6 +74,7 @@ export * from "./creditusageresponsebody.js"; export * from "./cursorhookpayload.js"; export * from "./cursorhookresult.js"; export * from "./customdomain.js"; +export * from "./customdomainmcpendpoint.js"; export * from "./deleteglobaltoolvariationresult.js"; export * from "./deleterequestbody.js"; export * from "./deployment.js"; @@ -150,6 +151,7 @@ export * from "./listchallengebucketsresult.js"; export * from "./listchallengesresult.js"; export * from "./listchatsresult.js"; export * from "./listchatswithresolutionsresult.js"; +export * from "./listcustomdomainmcpendpointsresult.js"; export * from "./listdeploymentresult.js"; export * from "./listenvironmentsresult.js"; export * from "./listfilteroptionspayload.js"; @@ -278,6 +280,8 @@ export * from "./resource.js"; export * from "./resourceentry.js"; export * from "./responsefilter.js"; export * from "./riskcapabilitiesresult.js"; +export * from "./riskcategoriesresult.js"; +export * from "./riskcategorydefinition.js"; export * from "./riskchatsummary.js"; export * from "./riskoverviewcategory.js"; export * from "./riskoverviewresult.js"; @@ -287,6 +291,9 @@ export * from "./riskpolicy.js"; export * from "./riskpolicystatus.js"; export * from "./riskresult.js"; export * from "./riskresultredacted.js"; +export * from "./riskrulebreakdownentry.js"; +export * from "./riskrulebreakdownresult.js"; +export * from "./riskuserbreakdownresult.js"; export * from "./role.js"; export * from "./rolegrant.js"; export * from "./rolesummary.js"; @@ -352,7 +359,7 @@ export * from "./updateenvironmentrequestbody.js"; export * from "./updateinviterolerequestbody.js"; export * from "./updatemcpendpointform.js"; export * from "./updatemcpserverform.js"; -export * from "./updatememberroleform.js"; +export * from "./updatememberrolesform.js"; export * from "./updateoauthproxyserverrequestbody.js"; export * from "./updatepackageform.js"; export * from "./updatepackageresult.js"; diff --git a/mise.lock b/mise.lock index f43efe477a..02b41aeff6 100644 --- a/mise.lock +++ b/mise.lock @@ -1,4 +1,4 @@ -# @generated - this file is auto-generated by `mise lock` https://mise.en.dev/dev-tools/mise-lock.html +# @generated - this file is auto-generated by `mise lock` https://mise.jdx.dev/dev-tools/mise-lock.html [[tools.apko]] version = "1.1.3" diff --git a/server/gen/http/cli/gram/cli.go b/server/gen/http/cli/gram/cli.go index 18ba426dd0..6b6a8b66f6 100644 --- a/server/gen/http/cli/gram/cli.go +++ b/server/gen/http/cli/gram/cli.go @@ -73,8 +73,8 @@ func UsageCommands() []string { return []string{ "external receive-work-os-webhook", "about openapi", - "access (list-roles|get-role|create-role|update-role|delete-role|list-scopes|list-members|list-grants|update-member-role|get-rbac-status|enable-rbac|disable-rbac|list-challenges|list-challenge-buckets|resolve-challenge)", - "admin poke", + "access (list-roles|get-role|create-role|update-role|delete-role|list-scopes|list-members|list-grants|update-member-roles|get-rbac-status|enable-rbac|disable-rbac|list-challenges|list-challenge-buckets|resolve-challenge)", + "admin (login|callback|logout|get-project|update-organization|get-organization|list-organization-members|list-organization-projects|list-organizations)", "assets (serve-image|upload-image|upload-functions|upload-open-ap-iv3|fetch-open-ap-iv3-from-url|serve-open-ap-iv3|serve-function|list-assets|upload-chat-attachment|serve-chat-attachment|create-signed-chat-attachment-url|serve-chat-attachment-signed)", "assistant-memories (list-assistant-memories|get-assistant-memory|delete-assistant-memory)", "assistants (list-assistants|get-assistant|create-assistant|update-assistant|delete-assistant)", @@ -83,7 +83,7 @@ func UsageCommands() []string { "chat (list-chats|load-chat|generate-title|credit-usage|list-chats-with-resolutions|delete-chat|submit-feedback)", "chat-sessions (create|revoke)", "deployments (get-deployment|get-latest-deployment|get-active-deployment|create-deployment|evolve|redeploy|list-deployments|get-deployment-logs)", - "domains (get-domain|create-domain|delete-domain)", + "domains (get-domain|create-domain|delete-domain|list-mcp-endpoints)", "environments (create-environment|list-environments|update-environment|clone-environment|delete-environment|set-source-environment-link|delete-source-environment-link|get-source-environment|set-toolset-environment-link|delete-toolset-environment-link|get-toolset-environment)", "mcp-registries (clear-cache|list-registries|list-catalog|get-server-details)", "collections (create|list|update|delete|attach-server|detach-server|list-servers)", @@ -107,7 +107,7 @@ func UsageCommands() []string { "remote-session-issuers (discover-remote-session-issuer|create-remote-session-issuer|update-remote-session-issuer|list-remote-session-issuers|get-remote-session-issuer|delete-remote-session-issuer)", "remote-sessions (list-remote-sessions|revoke-remote-session)", "resources list-resources", - "risk (create-risk-policy|list-risk-policies|get-risk-capabilities|get-risk-policy|update-risk-policy|delete-risk-policy|list-risk-results|list-risk-results-for-agent|list-risk-results-by-chat|get-risk-overview|get-risk-policy-status|list-shadow-mcp-approvals|approve-shadow-mcp|revoke-shadow-mcp-approval|trigger-risk-analysis)", + "risk (create-risk-policy|list-risk-policies|get-risk-capabilities|get-risk-policy|update-risk-policy|delete-risk-policy|list-risk-results|list-risk-results-for-agent|list-risk-results-by-chat|get-risk-overview|list-risk-categories|get-risk-user-breakdown|get-risk-rule-breakdown|get-risk-policy-status|list-shadow-mcp-approvals|approve-shadow-mcp|revoke-shadow-mcp-approval|trigger-risk-analysis)", "slack (create-slack-app|list-slack-apps|get-slack-app|configure-slack-app|update-slack-app|delete-slack-app)", "telemetry (search-logs|search-tool-calls|search-chats|search-users|capture-event|get-project-metrics-summary|get-user-metrics-summary|get-observability-overview|get-project-overview|list-filter-options|list-attribute-keys|get-hooks-summary|list-hooks-traces)", "templates (create-template|update-template|get-template|list-templates|delete-template|render-template-by-id|render-template)", @@ -128,7 +128,7 @@ func UsageExamples() string { return os.Args[0] + " " + "external receive-work-os-webhook --workos-signature \"abc123\" --stream \"goa.png\"" + "\n" + os.Args[0] + " " + "about openapi" + "\n" + os.Args[0] + " " + "access list-roles --apikey-token \"abc123\" --session-token \"abc123\"" + "\n" + - os.Args[0] + " " + "admin poke" + "\n" + + os.Args[0] + " " + "admin login --return-to \"abc123\" --prompt \"abc123\"" + "\n" + os.Args[0] + " " + "assets serve-image --id \"abc123\"" + "\n" + "" } @@ -191,10 +191,10 @@ func ParseEndpoint( accessListGrantsApikeyTokenFlag = accessListGrantsFlags.String("apikey-token", "", "") accessListGrantsSessionTokenFlag = accessListGrantsFlags.String("session-token", "", "") - accessUpdateMemberRoleFlags = flag.NewFlagSet("update-member-role", flag.ExitOnError) - accessUpdateMemberRoleBodyFlag = accessUpdateMemberRoleFlags.String("body", "REQUIRED", "") - accessUpdateMemberRoleApikeyTokenFlag = accessUpdateMemberRoleFlags.String("apikey-token", "", "") - accessUpdateMemberRoleSessionTokenFlag = accessUpdateMemberRoleFlags.String("session-token", "", "") + accessUpdateMemberRolesFlags = flag.NewFlagSet("update-member-roles", flag.ExitOnError) + accessUpdateMemberRolesBodyFlag = accessUpdateMemberRolesFlags.String("body", "REQUIRED", "") + accessUpdateMemberRolesApikeyTokenFlag = accessUpdateMemberRolesFlags.String("apikey-token", "", "") + accessUpdateMemberRolesSessionTokenFlag = accessUpdateMemberRolesFlags.String("session-token", "", "") accessGetRBACStatusFlags = flag.NewFlagSet("get-rbac-status", flag.ExitOnError) accessGetRBACStatusSessionTokenFlag = accessGetRBACStatusFlags.String("session-token", "", "") @@ -235,7 +235,47 @@ func ParseEndpoint( adminFlags = flag.NewFlagSet("admin", flag.ContinueOnError) - adminPokeFlags = flag.NewFlagSet("poke", flag.ExitOnError) + adminLoginFlags = flag.NewFlagSet("login", flag.ExitOnError) + adminLoginReturnToFlag = adminLoginFlags.String("return-to", "", "") + adminLoginPromptFlag = adminLoginFlags.String("prompt", "", "") + + adminCallbackFlags = flag.NewFlagSet("callback", flag.ExitOnError) + adminCallbackCodeFlag = adminCallbackFlags.String("code", "", "") + adminCallbackStateParamFlag = adminCallbackFlags.String("state-param", "REQUIRED", "") + adminCallbackErrorFlag = adminCallbackFlags.String("error", "", "") + adminCallbackErrorDescriptionFlag = adminCallbackFlags.String("error-description", "", "") + adminCallbackStateCookieFlag = adminCallbackFlags.String("state-cookie", "", "") + + adminLogoutFlags = flag.NewFlagSet("logout", flag.ExitOnError) + adminLogoutSessionIDFlag = adminLogoutFlags.String("session-id", "", "") + + adminGetProjectFlags = flag.NewFlagSet("get-project", flag.ExitOnError) + adminGetProjectIDOrSlugFlag = adminGetProjectFlags.String("id-or-slug", "REQUIRED", "") + adminGetProjectAdminSessionTokenFlag = adminGetProjectFlags.String("admin-session-token", "", "") + + adminUpdateOrganizationFlags = flag.NewFlagSet("update-organization", flag.ExitOnError) + adminUpdateOrganizationBodyFlag = adminUpdateOrganizationFlags.String("body", "REQUIRED", "") + adminUpdateOrganizationAdminSessionTokenFlag = adminUpdateOrganizationFlags.String("admin-session-token", "", "") + + adminGetOrganizationFlags = flag.NewFlagSet("get-organization", flag.ExitOnError) + adminGetOrganizationIDOrSlugFlag = adminGetOrganizationFlags.String("id-or-slug", "REQUIRED", "") + adminGetOrganizationAdminSessionTokenFlag = adminGetOrganizationFlags.String("admin-session-token", "", "") + + adminListOrganizationMembersFlags = flag.NewFlagSet("list-organization-members", flag.ExitOnError) + adminListOrganizationMembersOrganizationIDFlag = adminListOrganizationMembersFlags.String("organization-id", "REQUIRED", "") + adminListOrganizationMembersAdminSessionTokenFlag = adminListOrganizationMembersFlags.String("admin-session-token", "", "") + + adminListOrganizationProjectsFlags = flag.NewFlagSet("list-organization-projects", flag.ExitOnError) + adminListOrganizationProjectsOrganizationIDFlag = adminListOrganizationProjectsFlags.String("organization-id", "REQUIRED", "") + adminListOrganizationProjectsAdminSessionTokenFlag = adminListOrganizationProjectsFlags.String("admin-session-token", "", "") + + adminListOrganizationsFlags = flag.NewFlagSet("list-organizations", flag.ExitOnError) + adminListOrganizationsQFlag = adminListOrganizationsFlags.String("q", "", "") + adminListOrganizationsAccountTypeFlag = adminListOrganizationsFlags.String("account-type", "", "") + adminListOrganizationsIncludeDisabledFlag = adminListOrganizationsFlags.String("include-disabled", "", "") + adminListOrganizationsCursorFlag = adminListOrganizationsFlags.String("cursor", "", "") + adminListOrganizationsLimitFlag = adminListOrganizationsFlags.String("limit", "", "") + adminListOrganizationsAdminSessionTokenFlag = adminListOrganizationsFlags.String("admin-session-token", "", "") assetsFlags = flag.NewFlagSet("assets", flag.ContinueOnError) @@ -426,7 +466,9 @@ func ParseEndpoint( chatListChatsWithResolutionsFlags = flag.NewFlagSet("list-chats-with-resolutions", flag.ExitOnError) chatListChatsWithResolutionsSearchFlag = chatListChatsWithResolutionsFlags.String("search", "", "") chatListChatsWithResolutionsExternalUserIDFlag = chatListChatsWithResolutionsFlags.String("external-user-id", "", "") + chatListChatsWithResolutionsAssistantIDFlag = chatListChatsWithResolutionsFlags.String("assistant-id", "", "") chatListChatsWithResolutionsResolutionStatusFlag = chatListChatsWithResolutionsFlags.String("resolution-status", "", "") + chatListChatsWithResolutionsHasRiskFlag = chatListChatsWithResolutionsFlags.String("has-risk", "", "") chatListChatsWithResolutionsFromFlag = chatListChatsWithResolutionsFlags.String("from", "", "") chatListChatsWithResolutionsToFlag = chatListChatsWithResolutionsFlags.String("to", "", "") chatListChatsWithResolutionsLimitFlag = chatListChatsWithResolutionsFlags.String("limit", "50", "") @@ -524,6 +566,9 @@ func ParseEndpoint( domainsDeleteDomainFlags = flag.NewFlagSet("delete-domain", flag.ExitOnError) domainsDeleteDomainSessionTokenFlag = domainsDeleteDomainFlags.String("session-token", "", "") + domainsListMcpEndpointsFlags = flag.NewFlagSet("list-mcp-endpoints", flag.ExitOnError) + domainsListMcpEndpointsSessionTokenFlag = domainsListMcpEndpointsFlags.String("session-token", "", "") + environmentsFlags = flag.NewFlagSet("environments", flag.ContinueOnError) environmentsCreateEnvironmentFlags = flag.NewFlagSet("create-environment", flag.ExitOnError) @@ -1222,6 +1267,11 @@ func ParseEndpoint( riskListRiskResultsFlags = flag.NewFlagSet("list-risk-results", flag.ExitOnError) riskListRiskResultsPolicyIDFlag = riskListRiskResultsFlags.String("policy-id", "", "") riskListRiskResultsChatIDFlag = riskListRiskResultsFlags.String("chat-id", "", "") + riskListRiskResultsCategoryFlag = riskListRiskResultsFlags.String("category", "", "") + riskListRiskResultsRuleIDFlag = riskListRiskResultsFlags.String("rule-id", "", "") + riskListRiskResultsUniqueMatchFlag = riskListRiskResultsFlags.String("unique-match", "", "") + riskListRiskResultsFromFlag = riskListRiskResultsFlags.String("from", "", "") + riskListRiskResultsToFlag = riskListRiskResultsFlags.String("to", "", "") riskListRiskResultsCursorFlag = riskListRiskResultsFlags.String("cursor", "", "") riskListRiskResultsLimitFlag = riskListRiskResultsFlags.String("limit", "", "") riskListRiskResultsApikeyTokenFlag = riskListRiskResultsFlags.String("apikey-token", "", "") @@ -1251,6 +1301,27 @@ func ParseEndpoint( riskGetRiskOverviewSessionTokenFlag = riskGetRiskOverviewFlags.String("session-token", "", "") riskGetRiskOverviewProjectSlugInputFlag = riskGetRiskOverviewFlags.String("project-slug-input", "", "") + riskListRiskCategoriesFlags = flag.NewFlagSet("list-risk-categories", flag.ExitOnError) + riskListRiskCategoriesApikeyTokenFlag = riskListRiskCategoriesFlags.String("apikey-token", "", "") + riskListRiskCategoriesSessionTokenFlag = riskListRiskCategoriesFlags.String("session-token", "", "") + riskListRiskCategoriesProjectSlugInputFlag = riskListRiskCategoriesFlags.String("project-slug-input", "", "") + + riskGetRiskUserBreakdownFlags = flag.NewFlagSet("get-risk-user-breakdown", flag.ExitOnError) + riskGetRiskUserBreakdownExternalUserIDFlag = riskGetRiskUserBreakdownFlags.String("external-user-id", "REQUIRED", "") + riskGetRiskUserBreakdownFromFlag = riskGetRiskUserBreakdownFlags.String("from", "", "") + riskGetRiskUserBreakdownToFlag = riskGetRiskUserBreakdownFlags.String("to", "", "") + riskGetRiskUserBreakdownApikeyTokenFlag = riskGetRiskUserBreakdownFlags.String("apikey-token", "", "") + riskGetRiskUserBreakdownSessionTokenFlag = riskGetRiskUserBreakdownFlags.String("session-token", "", "") + riskGetRiskUserBreakdownProjectSlugInputFlag = riskGetRiskUserBreakdownFlags.String("project-slug-input", "", "") + + riskGetRiskRuleBreakdownFlags = flag.NewFlagSet("get-risk-rule-breakdown", flag.ExitOnError) + riskGetRiskRuleBreakdownCategoryFlag = riskGetRiskRuleBreakdownFlags.String("category", "REQUIRED", "") + riskGetRiskRuleBreakdownFromFlag = riskGetRiskRuleBreakdownFlags.String("from", "", "") + riskGetRiskRuleBreakdownToFlag = riskGetRiskRuleBreakdownFlags.String("to", "", "") + riskGetRiskRuleBreakdownApikeyTokenFlag = riskGetRiskRuleBreakdownFlags.String("apikey-token", "", "") + riskGetRiskRuleBreakdownSessionTokenFlag = riskGetRiskRuleBreakdownFlags.String("session-token", "", "") + riskGetRiskRuleBreakdownProjectSlugInputFlag = riskGetRiskRuleBreakdownFlags.String("project-slug-input", "", "") + riskGetRiskPolicyStatusFlags = flag.NewFlagSet("get-risk-policy-status", flag.ExitOnError) riskGetRiskPolicyStatusIDFlag = riskGetRiskPolicyStatusFlags.String("id", "REQUIRED", "") riskGetRiskPolicyStatusApikeyTokenFlag = riskGetRiskPolicyStatusFlags.String("apikey-token", "", "") @@ -1714,7 +1785,7 @@ func ParseEndpoint( accessListScopesFlags.Usage = accessListScopesUsage accessListMembersFlags.Usage = accessListMembersUsage accessListGrantsFlags.Usage = accessListGrantsUsage - accessUpdateMemberRoleFlags.Usage = accessUpdateMemberRoleUsage + accessUpdateMemberRolesFlags.Usage = accessUpdateMemberRolesUsage accessGetRBACStatusFlags.Usage = accessGetRBACStatusUsage accessEnableRBACFlags.Usage = accessEnableRBACUsage accessDisableRBACFlags.Usage = accessDisableRBACUsage @@ -1723,7 +1794,15 @@ func ParseEndpoint( accessResolveChallengeFlags.Usage = accessResolveChallengeUsage adminFlags.Usage = adminUsage - adminPokeFlags.Usage = adminPokeUsage + adminLoginFlags.Usage = adminLoginUsage + adminCallbackFlags.Usage = adminCallbackUsage + adminLogoutFlags.Usage = adminLogoutUsage + adminGetProjectFlags.Usage = adminGetProjectUsage + adminUpdateOrganizationFlags.Usage = adminUpdateOrganizationUsage + adminGetOrganizationFlags.Usage = adminGetOrganizationUsage + adminListOrganizationMembersFlags.Usage = adminListOrganizationMembersUsage + adminListOrganizationProjectsFlags.Usage = adminListOrganizationProjectsUsage + adminListOrganizationsFlags.Usage = adminListOrganizationsUsage assetsFlags.Usage = assetsUsage assetsServeImageFlags.Usage = assetsServeImageUsage @@ -1790,6 +1869,7 @@ func ParseEndpoint( domainsGetDomainFlags.Usage = domainsGetDomainUsage domainsCreateDomainFlags.Usage = domainsCreateDomainUsage domainsDeleteDomainFlags.Usage = domainsDeleteDomainUsage + domainsListMcpEndpointsFlags.Usage = domainsListMcpEndpointsUsage environmentsFlags.Usage = environmentsUsage environmentsCreateEnvironmentFlags.Usage = environmentsCreateEnvironmentUsage @@ -1963,6 +2043,9 @@ func ParseEndpoint( riskListRiskResultsForAgentFlags.Usage = riskListRiskResultsForAgentUsage riskListRiskResultsByChatFlags.Usage = riskListRiskResultsByChatUsage riskGetRiskOverviewFlags.Usage = riskGetRiskOverviewUsage + riskListRiskCategoriesFlags.Usage = riskListRiskCategoriesUsage + riskGetRiskUserBreakdownFlags.Usage = riskGetRiskUserBreakdownUsage + riskGetRiskRuleBreakdownFlags.Usage = riskGetRiskRuleBreakdownUsage riskGetRiskPolicyStatusFlags.Usage = riskGetRiskPolicyStatusUsage riskListShadowMCPApprovalsFlags.Usage = riskListShadowMCPApprovalsUsage riskApproveShadowMCPFlags.Usage = riskApproveShadowMCPUsage @@ -2229,8 +2312,8 @@ func ParseEndpoint( case "list-grants": epf = accessListGrantsFlags - case "update-member-role": - epf = accessUpdateMemberRoleFlags + case "update-member-roles": + epf = accessUpdateMemberRolesFlags case "get-rbac-status": epf = accessGetRBACStatusFlags @@ -2254,8 +2337,32 @@ func ParseEndpoint( case "admin": switch epn { - case "poke": - epf = adminPokeFlags + case "login": + epf = adminLoginFlags + + case "callback": + epf = adminCallbackFlags + + case "logout": + epf = adminLogoutFlags + + case "get-project": + epf = adminGetProjectFlags + + case "update-organization": + epf = adminUpdateOrganizationFlags + + case "get-organization": + epf = adminGetOrganizationFlags + + case "list-organization-members": + epf = adminListOrganizationMembersFlags + + case "list-organization-projects": + epf = adminListOrganizationProjectsFlags + + case "list-organizations": + epf = adminListOrganizationsFlags } @@ -2437,6 +2544,9 @@ func ParseEndpoint( case "delete-domain": epf = domainsDeleteDomainFlags + case "list-mcp-endpoints": + epf = domainsListMcpEndpointsFlags + } case "environments": @@ -2908,6 +3018,15 @@ func ParseEndpoint( case "get-risk-overview": epf = riskGetRiskOverviewFlags + case "list-risk-categories": + epf = riskListRiskCategoriesFlags + + case "get-risk-user-breakdown": + epf = riskGetRiskUserBreakdownFlags + + case "get-risk-rule-breakdown": + epf = riskGetRiskRuleBreakdownFlags + case "get-risk-policy-status": epf = riskGetRiskPolicyStatusFlags @@ -3240,9 +3359,9 @@ func ParseEndpoint( case "list-grants": endpoint = c.ListGrants() data, err = accessc.BuildListGrantsPayload(*accessListGrantsApikeyTokenFlag, *accessListGrantsSessionTokenFlag) - case "update-member-role": - endpoint = c.UpdateMemberRole() - data, err = accessc.BuildUpdateMemberRolePayload(*accessUpdateMemberRoleBodyFlag, *accessUpdateMemberRoleApikeyTokenFlag, *accessUpdateMemberRoleSessionTokenFlag) + case "update-member-roles": + endpoint = c.UpdateMemberRoles() + data, err = accessc.BuildUpdateMemberRolesPayload(*accessUpdateMemberRolesBodyFlag, *accessUpdateMemberRolesApikeyTokenFlag, *accessUpdateMemberRolesSessionTokenFlag) case "get-rbac-status": endpoint = c.GetRBACStatus() data, err = accessc.BuildGetRBACStatusPayload(*accessGetRBACStatusSessionTokenFlag) @@ -3265,8 +3384,33 @@ func ParseEndpoint( case "admin": c := adminc.NewClient(scheme, host, doer, enc, dec, restore) switch epn { - case "poke": - endpoint = c.Poke() + case "login": + endpoint = c.Login() + data, err = adminc.BuildLoginPayload(*adminLoginReturnToFlag, *adminLoginPromptFlag) + case "callback": + endpoint = c.Callback() + data, err = adminc.BuildCallbackPayload(*adminCallbackCodeFlag, *adminCallbackStateParamFlag, *adminCallbackErrorFlag, *adminCallbackErrorDescriptionFlag, *adminCallbackStateCookieFlag) + case "logout": + endpoint = c.Logout() + data, err = adminc.BuildLogoutPayload(*adminLogoutSessionIDFlag) + case "get-project": + endpoint = c.GetProject() + data, err = adminc.BuildGetProjectPayload(*adminGetProjectIDOrSlugFlag, *adminGetProjectAdminSessionTokenFlag) + case "update-organization": + endpoint = c.UpdateOrganization() + data, err = adminc.BuildUpdateOrganizationPayload(*adminUpdateOrganizationBodyFlag, *adminUpdateOrganizationAdminSessionTokenFlag) + case "get-organization": + endpoint = c.GetOrganization() + data, err = adminc.BuildGetOrganizationPayload(*adminGetOrganizationIDOrSlugFlag, *adminGetOrganizationAdminSessionTokenFlag) + case "list-organization-members": + endpoint = c.ListOrganizationMembers() + data, err = adminc.BuildListOrganizationMembersPayload(*adminListOrganizationMembersOrganizationIDFlag, *adminListOrganizationMembersAdminSessionTokenFlag) + case "list-organization-projects": + endpoint = c.ListOrganizationProjects() + data, err = adminc.BuildListOrganizationProjectsPayload(*adminListOrganizationProjectsOrganizationIDFlag, *adminListOrganizationProjectsAdminSessionTokenFlag) + case "list-organizations": + endpoint = c.ListOrganizations() + data, err = adminc.BuildListOrganizationsPayload(*adminListOrganizationsQFlag, *adminListOrganizationsAccountTypeFlag, *adminListOrganizationsIncludeDisabledFlag, *adminListOrganizationsCursorFlag, *adminListOrganizationsLimitFlag, *adminListOrganizationsAdminSessionTokenFlag) } case "assets": c := assetsc.NewClient(scheme, host, doer, enc, dec, restore) @@ -3401,7 +3545,7 @@ func ParseEndpoint( data, err = chatc.BuildCreditUsagePayload(*chatCreditUsageSessionTokenFlag) case "list-chats-with-resolutions": endpoint = c.ListChatsWithResolutions() - data, err = chatc.BuildListChatsWithResolutionsPayload(*chatListChatsWithResolutionsSearchFlag, *chatListChatsWithResolutionsExternalUserIDFlag, *chatListChatsWithResolutionsResolutionStatusFlag, *chatListChatsWithResolutionsFromFlag, *chatListChatsWithResolutionsToFlag, *chatListChatsWithResolutionsLimitFlag, *chatListChatsWithResolutionsOffsetFlag, *chatListChatsWithResolutionsSortByFlag, *chatListChatsWithResolutionsSortOrderFlag, *chatListChatsWithResolutionsSessionTokenFlag, *chatListChatsWithResolutionsProjectSlugInputFlag, *chatListChatsWithResolutionsChatSessionsTokenFlag) + data, err = chatc.BuildListChatsWithResolutionsPayload(*chatListChatsWithResolutionsSearchFlag, *chatListChatsWithResolutionsExternalUserIDFlag, *chatListChatsWithResolutionsAssistantIDFlag, *chatListChatsWithResolutionsResolutionStatusFlag, *chatListChatsWithResolutionsHasRiskFlag, *chatListChatsWithResolutionsFromFlag, *chatListChatsWithResolutionsToFlag, *chatListChatsWithResolutionsLimitFlag, *chatListChatsWithResolutionsOffsetFlag, *chatListChatsWithResolutionsSortByFlag, *chatListChatsWithResolutionsSortOrderFlag, *chatListChatsWithResolutionsSessionTokenFlag, *chatListChatsWithResolutionsProjectSlugInputFlag, *chatListChatsWithResolutionsChatSessionsTokenFlag) case "delete-chat": endpoint = c.DeleteChat() data, err = chatc.BuildDeleteChatPayload(*chatDeleteChatIDFlag, *chatDeleteChatSessionTokenFlag, *chatDeleteChatProjectSlugInputFlag) @@ -3459,6 +3603,9 @@ func ParseEndpoint( case "delete-domain": endpoint = c.DeleteDomain() data, err = domainsc.BuildDeleteDomainPayload(*domainsDeleteDomainSessionTokenFlag) + case "list-mcp-endpoints": + endpoint = c.ListMcpEndpoints() + data, err = domainsc.BuildListMcpEndpointsPayload(*domainsListMcpEndpointsSessionTokenFlag) } case "environments": c := environmentsc.NewClient(scheme, host, doer, enc, dec, restore) @@ -3920,7 +4067,7 @@ func ParseEndpoint( data, err = riskc.BuildDeleteRiskPolicyPayload(*riskDeleteRiskPolicyIDFlag, *riskDeleteRiskPolicyApikeyTokenFlag, *riskDeleteRiskPolicySessionTokenFlag, *riskDeleteRiskPolicyProjectSlugInputFlag) case "list-risk-results": endpoint = c.ListRiskResults() - data, err = riskc.BuildListRiskResultsPayload(*riskListRiskResultsPolicyIDFlag, *riskListRiskResultsChatIDFlag, *riskListRiskResultsCursorFlag, *riskListRiskResultsLimitFlag, *riskListRiskResultsApikeyTokenFlag, *riskListRiskResultsSessionTokenFlag, *riskListRiskResultsProjectSlugInputFlag) + data, err = riskc.BuildListRiskResultsPayload(*riskListRiskResultsPolicyIDFlag, *riskListRiskResultsChatIDFlag, *riskListRiskResultsCategoryFlag, *riskListRiskResultsRuleIDFlag, *riskListRiskResultsUniqueMatchFlag, *riskListRiskResultsFromFlag, *riskListRiskResultsToFlag, *riskListRiskResultsCursorFlag, *riskListRiskResultsLimitFlag, *riskListRiskResultsApikeyTokenFlag, *riskListRiskResultsSessionTokenFlag, *riskListRiskResultsProjectSlugInputFlag) case "list-risk-results-for-agent": endpoint = c.ListRiskResultsForAgent() data, err = riskc.BuildListRiskResultsForAgentPayload(*riskListRiskResultsForAgentPolicyIDFlag, *riskListRiskResultsForAgentChatIDFlag, *riskListRiskResultsForAgentCursorFlag, *riskListRiskResultsForAgentLimitFlag, *riskListRiskResultsForAgentApikeyTokenFlag, *riskListRiskResultsForAgentSessionTokenFlag, *riskListRiskResultsForAgentProjectSlugInputFlag) @@ -3930,6 +4077,15 @@ func ParseEndpoint( case "get-risk-overview": endpoint = c.GetRiskOverview() data, err = riskc.BuildGetRiskOverviewPayload(*riskGetRiskOverviewFromFlag, *riskGetRiskOverviewToFlag, *riskGetRiskOverviewApikeyTokenFlag, *riskGetRiskOverviewSessionTokenFlag, *riskGetRiskOverviewProjectSlugInputFlag) + case "list-risk-categories": + endpoint = c.ListRiskCategories() + data, err = riskc.BuildListRiskCategoriesPayload(*riskListRiskCategoriesApikeyTokenFlag, *riskListRiskCategoriesSessionTokenFlag, *riskListRiskCategoriesProjectSlugInputFlag) + case "get-risk-user-breakdown": + endpoint = c.GetRiskUserBreakdown() + data, err = riskc.BuildGetRiskUserBreakdownPayload(*riskGetRiskUserBreakdownExternalUserIDFlag, *riskGetRiskUserBreakdownFromFlag, *riskGetRiskUserBreakdownToFlag, *riskGetRiskUserBreakdownApikeyTokenFlag, *riskGetRiskUserBreakdownSessionTokenFlag, *riskGetRiskUserBreakdownProjectSlugInputFlag) + case "get-risk-rule-breakdown": + endpoint = c.GetRiskRuleBreakdown() + data, err = riskc.BuildGetRiskRuleBreakdownPayload(*riskGetRiskRuleBreakdownCategoryFlag, *riskGetRiskRuleBreakdownFromFlag, *riskGetRiskRuleBreakdownToFlag, *riskGetRiskRuleBreakdownApikeyTokenFlag, *riskGetRiskRuleBreakdownSessionTokenFlag, *riskGetRiskRuleBreakdownProjectSlugInputFlag) case "get-risk-policy-status": endpoint = c.GetRiskPolicyStatus() data, err = riskc.BuildGetRiskPolicyStatusPayload(*riskGetRiskPolicyStatusIDFlag, *riskGetRiskPolicyStatusApikeyTokenFlag, *riskGetRiskPolicyStatusSessionTokenFlag, *riskGetRiskPolicyStatusProjectSlugInputFlag) @@ -4275,7 +4431,7 @@ func accessUsage() { fmt.Fprintln(os.Stderr, ` list-scopes: List all available scopes and their resource types.`) fmt.Fprintln(os.Stderr, ` list-members: List all team members with their role assignments.`) fmt.Fprintln(os.Stderr, ` list-grants: List the current user's effective grants, including inherited role grants.`) - fmt.Fprintln(os.Stderr, ` update-member-role: Change a team member's role assignment.`) + fmt.Fprintln(os.Stderr, ` update-member-roles: Update a team member's role assignments.`) fmt.Fprintln(os.Stderr, ` get-rbac-status: Returns whether RBAC is currently enabled for the current organization.`) fmt.Fprintln(os.Stderr, ` enable-rbac: Enable RBAC for the current organization. Seeds default grants for system roles.`) fmt.Fprintln(os.Stderr, ` disable-rbac: Disable RBAC enforcement for the current organization.`) @@ -4454,9 +4610,9 @@ func accessListGrantsUsage() { fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "access list-grants --apikey-token \"abc123\" --session-token \"abc123\"") } -func accessUpdateMemberRoleUsage() { +func accessUpdateMemberRolesUsage() { // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] access update-member-role", os.Args[0]) + fmt.Fprintf(os.Stderr, "%s [flags] access update-member-roles", os.Args[0]) fmt.Fprint(os.Stderr, " -body JSON") fmt.Fprint(os.Stderr, " -apikey-token STRING") fmt.Fprint(os.Stderr, " -session-token STRING") @@ -4464,7 +4620,7 @@ func accessUpdateMemberRoleUsage() { // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Change a team member's role assignment.`) + fmt.Fprintln(os.Stderr, `Update a team member's role assignments.`) // Flags list fmt.Fprintln(os.Stderr, ` -body JSON: `) @@ -4473,7 +4629,7 @@ func accessUpdateMemberRoleUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "access update-member-role --body '{\n \"role_id\": \"abc123\",\n \"user_id\": \"abc123\"\n }' --apikey-token \"abc123\" --session-token \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "access update-member-roles --body '{\n \"role_ids\": [\n \"abc123\"\n ],\n \"user_id\": \"abc123\"\n }' --apikey-token \"abc123\" --session-token \"abc123\"") } func accessGetRBACStatusUsage() { @@ -4624,28 +4780,212 @@ func accessResolveChallengeUsage() { // adminUsage displays the usage of the admin command and its subcommands. func adminUsage() { - fmt.Fprintln(os.Stderr, `Operational endpoints for administrative tasks.`) + fmt.Fprintln(os.Stderr, `Operations supporting admin tasks, protected by Google workspace auth.`) fmt.Fprintf(os.Stderr, "Usage:\n %s [globalflags] admin COMMAND [flags]\n\n", os.Args[0]) fmt.Fprintln(os.Stderr, "COMMAND:") - fmt.Fprintln(os.Stderr, ` poke: Poke implements poke.`) + fmt.Fprintln(os.Stderr, ` login: Login implements login.`) + fmt.Fprintln(os.Stderr, ` callback: Callback implements callback.`) + fmt.Fprintln(os.Stderr, ` logout: Logout implements logout.`) + fmt.Fprintln(os.Stderr, ` get-project: Returns full admin details for a project by id or slug, including aggregated counts of child resources.`) + fmt.Fprintln(os.Stderr, ` update-organization: Updates admin-managed fields on an organization. At least one of account_type or whitelisted must be supplied.`) + fmt.Fprintln(os.Stderr, ` get-organization: Returns full admin details for a single organization by id or slug.`) + fmt.Fprintln(os.Stderr, ` list-organization-members: Lists members of an organization (admin view, no auth scoping).`) + fmt.Fprintln(os.Stderr, ` list-organization-projects: Lists projects belonging to an organization (admin view, no auth scoping).`) + fmt.Fprintln(os.Stderr, ` list-organizations: Lists organizations for admin operations with optional search and filters.`) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Additional help:") fmt.Fprintf(os.Stderr, " %s admin COMMAND --help\n", os.Args[0]) } -func adminPokeUsage() { +func adminLoginUsage() { // Header with flags - fmt.Fprintf(os.Stderr, "%s [flags] admin poke", os.Args[0]) + fmt.Fprintf(os.Stderr, "%s [flags] admin login", os.Args[0]) + fmt.Fprint(os.Stderr, " -return-to STRING") + fmt.Fprint(os.Stderr, " -prompt STRING") fmt.Fprintln(os.Stderr) // Description fmt.Fprintln(os.Stderr) - fmt.Fprintln(os.Stderr, `Poke implements poke.`) + fmt.Fprintln(os.Stderr, `Login implements login.`) // Flags list + fmt.Fprintln(os.Stderr, ` -return-to STRING: `) + fmt.Fprintln(os.Stderr, ` -prompt STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin login --return-to \"abc123\" --prompt \"abc123\"") +} + +func adminCallbackUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] admin callback", os.Args[0]) + fmt.Fprint(os.Stderr, " -code STRING") + fmt.Fprint(os.Stderr, " -state-param STRING") + fmt.Fprint(os.Stderr, " -error STRING") + fmt.Fprint(os.Stderr, " -error-description STRING") + fmt.Fprint(os.Stderr, " -state-cookie STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Callback implements callback.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -code STRING: `) + fmt.Fprintln(os.Stderr, ` -state-param STRING: `) + fmt.Fprintln(os.Stderr, ` -error STRING: `) + fmt.Fprintln(os.Stderr, ` -error-description STRING: `) + fmt.Fprintln(os.Stderr, ` -state-cookie STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin callback --code \"abc123\" --state-param \"abc123\" --error \"abc123\" --error-description \"abc123\" --state-cookie \"abc123\"") +} + +func adminLogoutUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] admin logout", os.Args[0]) + fmt.Fprint(os.Stderr, " -session-id STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Logout implements logout.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -session-id STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin logout --session-id \"abc123\"") +} + +func adminGetProjectUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] admin get-project", os.Args[0]) + fmt.Fprint(os.Stderr, " -id-or-slug STRING") + fmt.Fprint(os.Stderr, " -admin-session-token STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Returns full admin details for a project by id or slug, including aggregated counts of child resources.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -id-or-slug STRING: `) + fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin get-project --id-or-slug \"abc123\" --admin-session-token \"abc123\"") +} + +func adminUpdateOrganizationUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] admin update-organization", os.Args[0]) + fmt.Fprint(os.Stderr, " -body JSON") + fmt.Fprint(os.Stderr, " -admin-session-token STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Updates admin-managed fields on an organization. At least one of account_type or whitelisted must be supplied.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -body JSON: `) + fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin update-organization --body '{\n \"account_type\": \"abc123\",\n \"id\": \"abc123\",\n \"whitelisted\": false\n }' --admin-session-token \"abc123\"") +} + +func adminGetOrganizationUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] admin get-organization", os.Args[0]) + fmt.Fprint(os.Stderr, " -id-or-slug STRING") + fmt.Fprint(os.Stderr, " -admin-session-token STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Returns full admin details for a single organization by id or slug.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -id-or-slug STRING: `) + fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin get-organization --id-or-slug \"abc123\" --admin-session-token \"abc123\"") +} + +func adminListOrganizationMembersUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] admin list-organization-members", os.Args[0]) + fmt.Fprint(os.Stderr, " -organization-id STRING") + fmt.Fprint(os.Stderr, " -admin-session-token STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Lists members of an organization (admin view, no auth scoping).`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -organization-id STRING: `) + fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin poke") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin list-organization-members --organization-id \"abc123\" --admin-session-token \"abc123\"") +} + +func adminListOrganizationProjectsUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] admin list-organization-projects", os.Args[0]) + fmt.Fprint(os.Stderr, " -organization-id STRING") + fmt.Fprint(os.Stderr, " -admin-session-token STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Lists projects belonging to an organization (admin view, no auth scoping).`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -organization-id STRING: `) + fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin list-organization-projects --organization-id \"abc123\" --admin-session-token \"abc123\"") +} + +func adminListOrganizationsUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] admin list-organizations", os.Args[0]) + fmt.Fprint(os.Stderr, " -q STRING") + fmt.Fprint(os.Stderr, " -account-type STRING") + fmt.Fprint(os.Stderr, " -include-disabled BOOL") + fmt.Fprint(os.Stderr, " -cursor STRING") + fmt.Fprint(os.Stderr, " -limit INT") + fmt.Fprint(os.Stderr, " -admin-session-token STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Lists organizations for admin operations with optional search and filters.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -q STRING: `) + fmt.Fprintln(os.Stderr, ` -account-type STRING: `) + fmt.Fprintln(os.Stderr, ` -include-disabled BOOL: `) + fmt.Fprintln(os.Stderr, ` -cursor STRING: `) + fmt.Fprintln(os.Stderr, ` -limit INT: `) + fmt.Fprintln(os.Stderr, ` -admin-session-token STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "admin list-organizations --q \"abc123\" --account-type \"abc123\" --include-disabled false --cursor \"abc123\" --limit 1 --admin-session-token \"abc123\"") } // assetsUsage displays the usage of the assets command and its subcommands. @@ -5477,7 +5817,9 @@ func chatListChatsWithResolutionsUsage() { fmt.Fprintf(os.Stderr, "%s [flags] chat list-chats-with-resolutions", os.Args[0]) fmt.Fprint(os.Stderr, " -search STRING") fmt.Fprint(os.Stderr, " -external-user-id STRING") + fmt.Fprint(os.Stderr, " -assistant-id STRING") fmt.Fprint(os.Stderr, " -resolution-status STRING") + fmt.Fprint(os.Stderr, " -has-risk STRING") fmt.Fprint(os.Stderr, " -from STRING") fmt.Fprint(os.Stderr, " -to STRING") fmt.Fprint(os.Stderr, " -limit INT") @@ -5496,7 +5838,9 @@ func chatListChatsWithResolutionsUsage() { // Flags list fmt.Fprintln(os.Stderr, ` -search STRING: `) fmt.Fprintln(os.Stderr, ` -external-user-id STRING: `) + fmt.Fprintln(os.Stderr, ` -assistant-id STRING: `) fmt.Fprintln(os.Stderr, ` -resolution-status STRING: `) + fmt.Fprintln(os.Stderr, ` -has-risk STRING: `) fmt.Fprintln(os.Stderr, ` -from STRING: `) fmt.Fprintln(os.Stderr, ` -to STRING: `) fmt.Fprintln(os.Stderr, ` -limit INT: `) @@ -5509,7 +5853,7 @@ func chatListChatsWithResolutionsUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "chat list-chats-with-resolutions --search \"abc123\" --external-user-id \"abc123\" --resolution-status \"abc123\" --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --limit 2 --offset 1 --sort-by \"num_messages\" --sort-order \"desc\" --session-token \"abc123\" --project-slug-input \"abc123\" --chat-sessions-token \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "chat list-chats-with-resolutions --search \"abc123\" --external-user-id \"abc123\" --assistant-id \"550e8400-e29b-41d4-a716-446655440000\" --resolution-status \"abc123\" --has-risk \"true\" --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --limit 2 --offset 1 --sort-by \"num_messages\" --sort-order \"desc\" --session-token \"abc123\" --project-slug-input \"abc123\" --chat-sessions-token \"abc123\"") } func chatDeleteChatUsage() { @@ -5836,6 +6180,7 @@ func domainsUsage() { fmt.Fprintln(os.Stderr, ` get-domain: Get the custom domain for an organization`) fmt.Fprintln(os.Stderr, ` create-domain: Create a custom domain for an organization`) fmt.Fprintln(os.Stderr, ` delete-domain: Delete a custom domain`) + fmt.Fprintln(os.Stderr, ` list-mcp-endpoints: List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through.`) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Additional help:") fmt.Fprintf(os.Stderr, " %s domains COMMAND --help\n", os.Args[0]) @@ -5896,6 +6241,24 @@ func domainsDeleteDomainUsage() { fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "domains delete-domain --session-token \"abc123\"") } +func domainsListMcpEndpointsUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] domains list-mcp-endpoints", os.Args[0]) + fmt.Fprint(os.Stderr, " -session-token STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -session-token STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "domains list-mcp-endpoints --session-token \"abc123\"") +} + // environmentsUsage displays the usage of the environments command and its // subcommands. func environmentsUsage() { @@ -8856,6 +9219,9 @@ func riskUsage() { fmt.Fprintln(os.Stderr, ` list-risk-results-for-agent: List risk analysis results with the `+"`"+`match`+"`"+` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `+"`"+`match`+"`"+` value — a non-sensitive server URL or command identifier — is passed through verbatim.`) fmt.Fprintln(os.Stderr, ` list-risk-results-by-chat: List risk results grouped by chat session for the current project.`) fmt.Fprintln(os.Stderr, ` get-risk-overview: Get risk overview metrics and trend data for the current project.`) + fmt.Fprintln(os.Stderr, ` list-risk-categories: Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.`) + fmt.Fprintln(os.Stderr, ` get-risk-user-breakdown: Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview.`) + fmt.Fprintln(os.Stderr, ` get-risk-rule-breakdown: Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview.`) fmt.Fprintln(os.Stderr, ` get-risk-policy-status: Get the analysis status of a risk policy including progress and workflow state.`) fmt.Fprintln(os.Stderr, ` list-shadow-mcp-approvals: List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.`) fmt.Fprintln(os.Stderr, ` approve-shadow-mcp: Approve a shadow-MCP server so the named policy stops blocking calls to it. `+"`"+`match`+"`"+` is the same opaque server identifier surfaced in `+"`"+`RiskResult.match`+"`"+` — typically a server URL, stdio command, or `+"`"+`mcp____`+"`"+` prefix.`) @@ -9010,6 +9376,11 @@ func riskListRiskResultsUsage() { fmt.Fprintf(os.Stderr, "%s [flags] risk list-risk-results", os.Args[0]) fmt.Fprint(os.Stderr, " -policy-id STRING") fmt.Fprint(os.Stderr, " -chat-id STRING") + fmt.Fprint(os.Stderr, " -category STRING") + fmt.Fprint(os.Stderr, " -rule-id STRING") + fmt.Fprint(os.Stderr, " -unique-match BOOL") + fmt.Fprint(os.Stderr, " -from STRING") + fmt.Fprint(os.Stderr, " -to STRING") fmt.Fprint(os.Stderr, " -cursor STRING") fmt.Fprint(os.Stderr, " -limit INT") fmt.Fprint(os.Stderr, " -apikey-token STRING") @@ -9024,6 +9395,11 @@ func riskListRiskResultsUsage() { // Flags list fmt.Fprintln(os.Stderr, ` -policy-id STRING: `) fmt.Fprintln(os.Stderr, ` -chat-id STRING: `) + fmt.Fprintln(os.Stderr, ` -category STRING: `) + fmt.Fprintln(os.Stderr, ` -rule-id STRING: `) + fmt.Fprintln(os.Stderr, ` -unique-match BOOL: `) + fmt.Fprintln(os.Stderr, ` -from STRING: `) + fmt.Fprintln(os.Stderr, ` -to STRING: `) fmt.Fprintln(os.Stderr, ` -cursor STRING: `) fmt.Fprintln(os.Stderr, ` -limit INT: `) fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) @@ -9032,7 +9408,7 @@ func riskListRiskResultsUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-results --policy-id \"550e8400-e29b-41d4-a716-446655440000\" --chat-id \"550e8400-e29b-41d4-a716-446655440000\" --cursor \"abc123\" --limit 2 --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-results --policy-id \"550e8400-e29b-41d4-a716-446655440000\" --chat-id \"550e8400-e29b-41d4-a716-446655440000\" --category \"abc123\" --rule-id \"abc123\" --unique-match false --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --cursor \"abc123\" --limit 2 --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") } func riskListRiskResultsForAgentUsage() { @@ -9117,6 +9493,84 @@ func riskGetRiskOverviewUsage() { fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk get-risk-overview --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") } +func riskListRiskCategoriesUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] risk list-risk-categories", os.Args[0]) + fmt.Fprint(os.Stderr, " -apikey-token STRING") + fmt.Fprint(os.Stderr, " -session-token STRING") + fmt.Fprint(os.Stderr, " -project-slug-input STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) + fmt.Fprintln(os.Stderr, ` -session-token STRING: `) + fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-categories --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") +} + +func riskGetRiskUserBreakdownUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] risk get-risk-user-breakdown", os.Args[0]) + fmt.Fprint(os.Stderr, " -external-user-id STRING") + fmt.Fprint(os.Stderr, " -from STRING") + fmt.Fprint(os.Stderr, " -to STRING") + fmt.Fprint(os.Stderr, " -apikey-token STRING") + fmt.Fprint(os.Stderr, " -session-token STRING") + fmt.Fprint(os.Stderr, " -project-slug-input STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -external-user-id STRING: `) + fmt.Fprintln(os.Stderr, ` -from STRING: `) + fmt.Fprintln(os.Stderr, ` -to STRING: `) + fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) + fmt.Fprintln(os.Stderr, ` -session-token STRING: `) + fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk get-risk-user-breakdown --external-user-id \"abc123\" --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") +} + +func riskGetRiskRuleBreakdownUsage() { + // Header with flags + fmt.Fprintf(os.Stderr, "%s [flags] risk get-risk-rule-breakdown", os.Args[0]) + fmt.Fprint(os.Stderr, " -category STRING") + fmt.Fprint(os.Stderr, " -from STRING") + fmt.Fprint(os.Stderr, " -to STRING") + fmt.Fprint(os.Stderr, " -apikey-token STRING") + fmt.Fprint(os.Stderr, " -session-token STRING") + fmt.Fprint(os.Stderr, " -project-slug-input STRING") + fmt.Fprintln(os.Stderr) + + // Description + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, `Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview.`) + + // Flags list + fmt.Fprintln(os.Stderr, ` -category STRING: `) + fmt.Fprintln(os.Stderr, ` -from STRING: `) + fmt.Fprintln(os.Stderr, ` -to STRING: `) + fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) + fmt.Fprintln(os.Stderr, ` -session-token STRING: `) + fmt.Fprintln(os.Stderr, ` -project-slug-input STRING: `) + + fmt.Fprintln(os.Stderr) + fmt.Fprintln(os.Stderr, "Example:") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk get-risk-rule-breakdown --category \"abc123\" --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") +} + func riskGetRiskPolicyStatusUsage() { // Header with flags fmt.Fprintf(os.Stderr, "%s [flags] risk get-risk-policy-status", os.Args[0]) diff --git a/server/gen/http/openapi3.json b/server/gen/http/openapi3.json index af3b482729..7ee00df9b6 100644 --- a/server/gen/http/openapi3.json +++ b/server/gen/http/openapi3.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/diagnostics.poke":{"get":{"tags":["admin"],"summary":"poke admin","operationId":"admin#poke","responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PokeResponseBody"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRole":{"put":{"description":"Change a team member's role assignment.","operationId":"updateMemberRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRole access","tags":["access"],"x-speakeasy-name-override":"updateMemberRole","x-speakeasy-react-hook":{"name":"UpdateMemberRole"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.checkSlugAvailability":{"get":{"description":"Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.","operationId":"checkMcpEndpointSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","in":"query","name":"custom_domain_id","schema":{"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMcpEndpointSlugAvailability mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"checkSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMcpEndpointSlugAvailability"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.overview.get":{"get":{"description":"Get risk overview metrics and trend data for the current project.","operationId":"getRiskOverview","parameters":[{"allowEmptyValue":true,"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","in":"query","name":"from","schema":{"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the overview window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the overview window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskOverview risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskOverview"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_id":{"type":"string","description":"Currently assigned role ID."}},"required":["id","name","email","role_id","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"decision":{"type":"string","description":"Top-level block decision for UserPromptSubmit / PostToolUse / Stop / SubagentStop. Use 'block' to halt processing."},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"reason":{"type":"string","description":"Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude (PostToolUse/Stop)."},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange for the cloned client.","pattern":"^[!-~]+$","maxLength":512},"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for the cloned client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the cloned client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. When set, MCP clients are required to authenticate against this issuer before connecting.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["name","visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange.","pattern":"^[!-~]+$","maxLength":512},"client_id":{"type":"string","description":"client_id supplied by the caller."},"client_secret":{"type":"string","description":"client_secret supplied by the caller. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for this client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Caller supplies client_id (and optional client_secret) obtained out-of-band from the upstream issuer.","required":["remote_session_issuer_id","user_session_issuer_id","client_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"slug":{"type":"string","description":"A URL-safe, project-unique slug derived server-side from the name and ID"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication for this server, if any.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"PokeResponseBody":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"audience":{"type":"string","description":"Upstream OAuth audience sent on the authorize redirect and token exchange. Null omits the audience parameter."},"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string"},"description":"Explicit upstream OAuth scopes the dance requests for this client. Null falls back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Null resolves to client_secret_basic at runtime.","enum":["client_secret_basic","client_secret_post"]},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskOverviewCategory":{"type":"object","properties":{"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category.","format":"int64"}},"required":["category","findings"]},"RiskOverviewResult":{"type":"object","properties":{"active_policies":{"type":"integer","description":"Enabled risk policies for the current project.","format":"int64"},"findings":{"type":"integer","description":"Policy findings in the window.","format":"int64"},"flagged_sessions":{"type":"integer","description":"Chat sessions with at least one finding in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the overview window.","format":"date-time"},"messages_scanned":{"type":"integer","description":"Messages analyzed by risk policies in the window.","format":"int64"},"time_series_findings":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewTimeSeriesFinding"},"description":"Time-series finding counts by category in the window."},"to":{"type":"string","description":"Exclusive end of the overview window.","format":"date-time"},"top_categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Top policy categories by finding count."},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewUser"},"description":"Top users by finding count."}},"required":["from","to","messages_scanned","findings","flagged_sessions","active_policies","top_categories","top_users","time_series_findings"]},"RiskOverviewTimeSeriesFinding":{"type":"object","properties":{"bucket_start":{"type":"string","description":"Time bucket start.","format":"date-time"},"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category and time bucket.","format":"int64"}},"required":["bucket_start","category","findings"]},"RiskOverviewUser":{"type":"object","properties":{"email":{"type":"string","description":"User email, or Unknown user when unavailable."},"findings":{"type":"integer","description":"Finding count for this user.","format":"int64"}},"required":["email","findings"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"RoleSummary":{"type":"object","properties":{"cost_per_user":{"type":"number","description":"Average cost per user (total_cost / user_count)","format":"double"},"role_id":{"type":"string","description":"Role identifier extracted from role URN"},"role_name":{"type":"string","description":"Human-readable role name"},"total_chats":{"type":"integer","description":"Total chat sessions across all users","format":"int64"},"total_cost":{"type":"number","description":"Total cost across all users with this role","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens across all users","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens across all users","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens across all users","format":"int64"},"user_count":{"type":"integer","description":"Number of users with this role","format":"int64"}},"description":"Aggregated usage summary for a role","required":["role_id","role_name","user_count","total_cost","cost_per_user","total_input_tokens","total_output_tokens","total_tokens","total_chats"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"group_by":{"type":"string","description":"Grouping dimension for results","default":"employee","enum":["employee","role"]},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleSummary"},"description":"List of role usage summaries (populated when group_by=role)"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries (populated when group_by=employee)"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server. Omit to leave the existing name unchanged; if provided, must be non-empty."},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. Omit to disable issuer-gated OAuth.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided. Omit name to leave the existing display name unchanged; the slug is recomputed server-side from the resulting name.","required":["id","visibility"]},"UpdateMemberRoleForm":{"type":"object","properties":{"role_id":{"type":"string","description":"The new role ID to assign."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_id"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Replace the upstream OAuth audience sent for this client. Omit to leave unchanged.","pattern":"^[!-~]+$","maxLength":512},"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Replace the explicit upstream OAuth scopes for this client. Omit to leave unchanged."},"token_endpoint_auth_method":{"type":"string","description":"Change how the client authenticates at the issuer's token endpoint.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operational endpoints for administrative tasks."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/auth.callback":{"get":{"tags":["admin"],"summary":"callback admin","operationId":"admin#callback","parameters":[{"name":"code","in":"query","description":"The authorization code returned by the provider on success","allowEmptyValue":true,"schema":{"type":"string","description":"The authorization code returned by the provider on success"}},{"name":"state","in":"query","description":"The state parameter returned, which should match the one generated in the login step","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"The state parameter returned, which should match the one generated in the login step"}},{"name":"error","in":"query","description":"OAuth error code returned by the provider (e.g. login_required for prompt=none failures)","allowEmptyValue":true,"schema":{"type":"string","description":"OAuth error code returned by the provider (e.g. login_required for prompt=none failures)"}},{"name":"error_description","in":"query","description":"Human-readable OAuth error description","allowEmptyValue":true,"schema":{"type":"string","description":"Human-readable OAuth error description"}},{"name":"gram_admin_login_state","in":"cookie","description":"The state cookie value for CSRF sanity checking against the state parameter","allowEmptyValue":true,"schema":{"type":"string","description":"The state cookie value for CSRF sanity checking against the state parameter"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect the client to after processing the callback","schema":{"type":"string","description":"The URL to redirect the client to after processing the callback"}},"Set-Cookie":{"description":"Admin session cookie","schema":{"type":"string","description":"Admin session cookie"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/auth.login":{"get":{"tags":["admin"],"summary":"login admin","operationId":"admin#login","parameters":[{"name":"return_to","in":"query","description":"Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted."}},{"name":"prompt","in":"query","description":"Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication."}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect the user to for Google authentication","schema":{"type":"string","description":"The URL to redirect the user to for Google authentication"}},"Set-Cookie":{"description":"CSRF state cookie for sanity-checking the callback","schema":{"type":"string","description":"CSRF state cookie for sanity-checking the callback"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/auth.logout":{"post":{"tags":["admin"],"summary":"logout admin","operationId":"admin#logout","parameters":[{"name":"gram_admin","in":"cookie","description":"The session cookie value to clear for logging out","allowEmptyValue":true,"schema":{"type":"string","description":"The session cookie value to clear for logging out"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/organization.get":{"get":{"tags":["admin"],"summary":"getOrganization admin","description":"Returns full admin details for a single organization by id or slug.","operationId":"adminGetOrganization","parameters":[{"name":"id_or_slug","in":"query","description":"Organization ID or slug.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID or slug."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOrganization"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.members":{"get":{"tags":["admin"],"summary":"listOrganizationMembers admin","description":"Lists members of an organization (admin view, no auth scoping).","operationId":"adminListOrganizationMembers","parameters":[{"name":"organization_id","in":"query","description":"Organization ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationMembersResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.projects":{"get":{"tags":["admin"],"summary":"listOrganizationProjects admin","description":"Lists projects belonging to an organization (admin view, no auth scoping).","operationId":"adminListOrganizationProjects","parameters":[{"name":"organization_id","in":"query","description":"Organization ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationProjectsResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.update":{"post":{"tags":["admin"],"summary":"updateOrganization admin","description":"Updates admin-managed fields on an organization. At least one of account_type or whitelisted must be supplied.","operationId":"adminUpdateOrganization","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOrganization"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organizations.list":{"get":{"description":"Lists organizations for admin operations with optional search and filters.","operationId":"adminListOrganizations","parameters":[{"allowEmptyValue":true,"description":"Search term applied to name and slug (case-insensitive substring).","in":"query","name":"q","schema":{"description":"Search term applied to name and slug (case-insensitive substring).","type":"string"}},{"allowEmptyValue":true,"description":"Filter by gram_account_type (e.g. free, pro, enterprise).","in":"query","name":"account_type","schema":{"description":"Filter by gram_account_type (e.g. free, pro, enterprise).","type":"string"}},{"allowEmptyValue":true,"description":"Include organizations with disabled_at set. Defaults to false.","in":"query","name":"include_disabled","schema":{"description":"Include organizations with disabled_at set. Defaults to false.","type":"boolean"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"admin_auth_header_Authorization":[]}],"summary":"listOrganizations admin","tags":["admin"],"x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"}}},"/admin/project.get":{"get":{"tags":["admin"],"summary":"getProject admin","description":"Returns full admin details for a project by id or slug, including aggregated counts of child resources.","operationId":"adminGetProject","parameters":[{"name":"id_or_slug","in":"query","description":"Project ID or slug.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Project ID or slug."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProjectDetail"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRoles":{"put":{"description":"Update a team member's role assignments.","operationId":"updateMemberRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRolesForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRoles access","tags":["access"],"x-speakeasy-name-override":"updateMemberRoles","x-speakeasy-react-hook":{"name":"UpdateMemberRoles"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter to chats produced by this assistant","in":"query","name":"assistant_id","schema":{"description":"Filter to chats produced by this assistant","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter by whether chat has risk findings: 'true', 'false', or empty for no filter.","in":"query","name":"has_risk","schema":{"description":"Filter by whether chat has risk findings: 'true', 'false', or empty for no filter.","enum":["","true","false"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.listMcpEndpoints":{"get":{"description":"List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through.","operationId":"listCustomDomainMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCustomDomainMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listMcpEndpoints domains","tags":["domains"],"x-speakeasy-name-override":"listMcpEndpoints","x-speakeasy-react-hook":{"name":"CustomDomainMcpEndpoints"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.checkSlugAvailability":{"get":{"description":"Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.","operationId":"checkMcpEndpointSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","in":"query","name":"custom_domain_id","schema":{"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMcpEndpointSlugAvailability mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"checkSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMcpEndpointSlugAvailability"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.categories":{"get":{"description":"Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.","operationId":"listRiskCategories","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCategoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskCategories risk","tags":["risk"],"x-speakeasy-group":"risk.categories","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskCategories"}}},"/rpc/risk.overview.get":{"get":{"description":"Get risk overview metrics and trend data for the current project.","operationId":"getRiskOverview","parameters":[{"allowEmptyValue":true,"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","in":"query","name":"from","schema":{"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the overview window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the overview window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskOverview risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskOverview"}}},"/rpc/risk.overview.rules":{"get":{"description":"Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview.","operationId":"getRiskRuleBreakdown","parameters":[{"allowEmptyValue":true,"description":"Required category key to break down by rule_id (e.g. secrets, pii).","in":"query","name":"category","required":true,"schema":{"description":"Required category key to break down by rule_id (e.g. secrets, pii).","type":"string"}},{"allowEmptyValue":true,"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","in":"query","name":"from","schema":{"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskRuleBreakdownResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskRuleBreakdown risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"rules","x-speakeasy-react-hook":{"name":"RiskRuleBreakdown"}}},"/rpc/risk.overview.userBreakdown":{"get":{"description":"Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview.","operationId":"getRiskUserBreakdown","parameters":[{"allowEmptyValue":true,"description":"External user identifier to scope the breakdown to.","in":"query","name":"external_user_id","required":true,"schema":{"description":"External user identifier to scope the breakdown to.","type":"string"}},{"allowEmptyValue":true,"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","in":"query","name":"from","schema":{"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskUserBreakdownResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskUserBreakdown risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"userBreakdown","x-speakeasy-react-hook":{"name":"RiskUserBreakdown"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional rule category key to filter by (e.g. secrets, pii, financial).","in":"query","name":"category","schema":{"description":"Optional rule category key to filter by (e.g. secrets, pii, financial).","type":"string"}},{"allowEmptyValue":true,"description":"Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).","in":"query","name":"rule_id","schema":{"description":"Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).","type":"string"}},{"allowEmptyValue":true,"description":"If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.","in":"query","name":"unique_match","schema":{"description":"If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.","type":"boolean"}},{"allowEmptyValue":true,"description":"Filter results to messages created at or after this timestamp (ISO 8601).","in":"query","name":"from","schema":{"description":"Filter results to messages created at or after this timestamp (ISO 8601).","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter results to messages created strictly before this timestamp (ISO 8601).","in":"query","name":"to","schema":{"description":"Filter results to messages created strictly before this timestamp (ISO 8601).","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_ids":{"type":"array","items":{"type":"string"},"description":"All role IDs assigned to this member."}},"required":["id","name","email","role_ids","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AdminListOrganizationMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AdminOrganizationMember"},"description":"The members of the organization."}},"required":["members"]},"AdminListOrganizationProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/AdminProject"},"description":"The projects belonging to the organization."}},"required":["projects"]},"AdminListOrganizationsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/AdminOrganization"},"description":"The page of organizations."}},"required":["organizations"]},"AdminOrganization":{"type":"object","properties":{"account_type":{"type":"string","description":"Gram account type (e.g. free, pro, enterprise)."},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"disabled_at":{"type":"string","description":"The time at which the organization was disabled, if any.","format":"date-time"},"free_trial_ends_at":{"type":"string","description":"The time at which the free trial ends.","format":"date-time"},"free_trial_started_at":{"type":"string","description":"The time at which the free trial started.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"member_count":{"type":"integer","description":"Number of active members in the organization.","format":"int64"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted for full access."},"workos_id":{"type":"string","description":"WorkOS organization ID, if linked."}},"description":"Organization details surfaced to admin operators.","required":["id","name","slug","account_type","whitelisted","member_count","created_at","updated_at"]},"AdminOrganizationMember":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"User display name."},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"User ID."},"last_login":{"type":"string","description":"The time the user last logged in, if any.","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"description":"Organization member surfaced to admin operators.","required":["id","email","display_name","created_at","updated_at"]},"AdminProject":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"description":"Project summary surfaced to admin operators.","required":["id","name","slug","created_at","updated_at"]},"AdminProjectDetail":{"type":"object","properties":{"api_key_count":{"type":"integer","description":"Number of active API keys in the project.","format":"int64"},"assistant_count":{"type":"integer","description":"Number of active assistants in the project.","format":"int64"},"created_at":{"type":"string","format":"date-time"},"deployment_count":{"type":"integer","description":"Total number of deployments in the project.","format":"int64"},"environment_count":{"type":"integer","description":"Number of active environments in the project.","format":"int64"},"functions_runner_version":{"type":"string","description":"Functions runner version pin, if set."},"http_tool_count":{"type":"integer","description":"Number of active HTTP tool definitions in the project.","format":"int64"},"id":{"type":"string","description":"Project ID."},"logo_asset_id":{"type":"string","description":"Project logo asset ID, if set."},"name":{"type":"string","description":"Project name."},"organization_id":{"type":"string","description":"Owning organization ID."},"slug":{"type":"string","description":"Project slug."},"toolset_count":{"type":"integer","description":"Number of active toolsets in the project.","format":"int64"},"updated_at":{"type":"string","format":"date-time"}},"description":"Full project detail surfaced to admin operators, including aggregated counts of child resources.","required":["id","name","slug","organization_id","toolset_count","deployment_count","http_tool_count","environment_count","api_key_count","assistant_count","created_at","updated_at"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"decision":{"type":"string","description":"Top-level block decision for UserPromptSubmit / PostToolUse / Stop / SubagentStop. Use 'block' to halt processing."},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"reason":{"type":"string","description":"Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude (PostToolUse/Stop)."},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange for the cloned client.","pattern":"^[!-~]+$","maxLength":512},"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for the cloned client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the cloned client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. When set, MCP clients are required to authenticate against this issuer before connecting.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["name","visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange.","pattern":"^[!-~]+$","maxLength":512},"client_id":{"type":"string","description":"client_id supplied by the caller."},"client_secret":{"type":"string","description":"client_secret supplied by the caller. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for this client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Caller supplies client_id (and optional client_secret) obtained out-of-band from the upstream issuer.","required":["remote_session_issuer_id","user_session_issuer_id","client_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"CustomDomainMcpEndpoint":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the parent MCP server","format":"uuid"},"mcp_server_name":{"type":"string","description":"The display name of the parent MCP server. May be empty if the parent has no configured name."},"mcp_server_slug":{"type":"string","description":"The url-friendly slug of the parent MCP server. May be empty if the parent has no configured slug."},"project_id":{"type":"string","description":"The ID of the project the endpoint belongs to","format":"uuid"},"project_name":{"type":"string","description":"The display name of the project the endpoint belongs to"},"project_slug":{"type":"string","description":"The url-friendly slug of the project the endpoint belongs to"},"slug":{"type":"string","description":"The endpoint slug"}},"description":"An MCP endpoint registered under a custom domain, with its parent MCP server and project denormalised for display in the dashboard's delete-impact preview.","required":["id","slug","project_id","project_name","project_slug","mcp_server_id"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListCustomDomainMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/CustomDomainMcpEndpoint"}}},"description":"Result of listing the MCP endpoints registered under an organization's custom domain.","required":["mcp_endpoints"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"slug":{"type":"string","description":"A URL-safe, project-unique slug derived server-side from the name and ID"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication for this server, if any.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"audience":{"type":"string","description":"Upstream OAuth audience sent on the authorize redirect and token exchange. Null omits the audience parameter."},"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string"},"description":"Explicit upstream OAuth scopes the dance requests for this client. Null falls back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Null resolves to client_secret_basic at runtime.","enum":["client_secret_basic","client_secret_post"]},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskCategoriesResult":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskCategoryDefinition"},"description":"Categories in classification-priority order. The last entry is the 'custom' fallback for findings that match none of the others."}},"description":"Canonical risk category definitions used to classify findings, in classification-priority order. Consumers should iterate in order and pick the first match.","required":["categories"]},"RiskCategoryDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Plain-English description of what this category covers."},"icon":{"type":"string","description":"Lucide icon name suggested for this category."},"key":{"type":"string","description":"Canonical category key (e.g. 'secrets', 'pii', 'shadow_mcp')."},"label":{"type":"string","description":"Human-readable category label for UI rendering."},"rule_id_prefix":{"type":"string","description":"When non-empty, findings whose rule_id starts with this prefix belong to this category. The catch-all for a family (e.g. 'pii.')."},"rule_ids":{"type":"array","items":{"type":"string"},"description":"When non-empty, findings whose rule_id is in this exact list belong to this category. Checked before rule_id_prefix."},"source":{"type":"string","description":"When non-empty, findings whose source equals this value belong to this category."}},"description":"One canonical risk category and how findings are classified into it.","required":["key","label","description","icon","source","rule_ids","rule_id_prefix"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskOverviewCategory":{"type":"object","properties":{"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category.","format":"int64"}},"required":["category","findings"]},"RiskOverviewResult":{"type":"object","properties":{"active_policies":{"type":"integer","description":"Enabled risk policies for the current project.","format":"int64"},"findings":{"type":"integer","description":"Policy findings in the window.","format":"int64"},"flagged_sessions":{"type":"integer","description":"Chat sessions with at least one finding in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the overview window.","format":"date-time"},"messages_scanned":{"type":"integer","description":"Messages analyzed by risk policies in the window.","format":"int64"},"time_series_findings":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewTimeSeriesFinding"},"description":"Time-series finding counts by category in the window."},"to":{"type":"string","description":"Exclusive end of the overview window.","format":"date-time"},"top_categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Top policy categories by finding count."},"top_rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Top rule_ids by finding count."},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewUser"},"description":"Top users by finding count."}},"required":["from","to","messages_scanned","findings","flagged_sessions","active_policies","top_categories","top_users","top_rules","time_series_findings"]},"RiskOverviewTimeSeriesFinding":{"type":"object","properties":{"bucket_start":{"type":"string","description":"Time bucket start.","format":"date-time"},"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category and time bucket.","format":"int64"}},"required":["bucket_start","category","findings"]},"RiskOverviewUser":{"type":"object","properties":{"email":{"type":"string","description":"User email, or Unknown user when unavailable."},"external_user_id":{"type":"string","description":"External user identifier as recorded on chats, when known. Empty when the finding cannot be attributed to an external user."},"findings":{"type":"integer","description":"Finding count for this user.","format":"int64"}},"required":["email","external_user_id","findings"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"RiskRuleBreakdownEntry":{"type":"object","properties":{"findings":{"type":"integer","description":"Finding count for this rule within the window.","format":"int64"},"rule_id":{"type":"string","description":"Rule identifier (e.g. 'secret.aws-access-key'). Empty when the finding has no rule_id (treat as 'unspecified')."},"source":{"type":"string","description":"Source bucket the rule belongs to (gitleaks, presidio, etc.) for label/icon resolution on the dashboard."}},"required":["rule_id","source","findings"]},"RiskRuleBreakdownResult":{"type":"object","properties":{"category":{"type":"string","description":"Category the breakdown is scoped to."},"from":{"type":"string","description":"Inclusive start of the window used.","format":"date-time"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Rules in this category, ordered by finding count descending."},"to":{"type":"string","description":"Exclusive end of the window used.","format":"date-time"},"total":{"type":"integer","description":"Total findings across all rules in this category and window.","format":"int64"}},"required":["from","to","category","rules","total"]},"RiskUserBreakdownResult":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Category breakdown for this user, ordered by finding count descending."},"external_user_id":{"type":"string","description":"External user the breakdown is scoped to."},"findings":{"type":"integer","description":"Total findings for this user in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the window used.","format":"date-time"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Rule_id breakdown for this user, ordered by finding count descending."},"to":{"type":"string","description":"Exclusive end of the window used.","format":"date-time"}},"required":["from","to","external_user_id","findings","categories","rules"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"RoleSummary":{"type":"object","properties":{"cost_per_user":{"type":"number","description":"Average cost per user (total_cost / user_count)","format":"double"},"role_id":{"type":"string","description":"Role identifier extracted from role URN"},"role_name":{"type":"string","description":"Human-readable role name"},"total_chats":{"type":"integer","description":"Total chat sessions across all users","format":"int64"},"total_cost":{"type":"number","description":"Total cost across all users with this role","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens across all users","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens across all users","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens across all users","format":"int64"},"user_count":{"type":"integer","description":"Number of users with this role","format":"int64"}},"description":"Aggregated usage summary for a role","required":["role_id","role_name","user_count","total_cost","cost_per_user","total_input_tokens","total_output_tokens","total_tokens","total_chats"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"group_by":{"type":"string","description":"Grouping dimension for results","default":"employee","enum":["employee","role"]},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleSummary"},"description":"List of role usage summaries (populated when group_by=role)"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries (populated when group_by=employee)"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server. Omit to leave the existing name unchanged; if provided, must be non-empty."},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. Omit to disable issuer-gated OAuth.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided. Omit name to leave the existing display name unchanged; the slug is recomputed server-side from the resulting name.","required":["id","visibility"]},"UpdateMemberRolesForm":{"type":"object","properties":{"role_ids":{"type":"array","items":{"type":"string"},"description":"The role IDs to assign. Replaces all existing role assignments."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_ids"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdateOrganizationRequestBody":{"type":"object","properties":{"account_type":{"type":"string","description":"New gram_account_type (e.g. free, pro, enterprise)."},"id":{"type":"string","description":"Organization ID."},"whitelisted":{"type":"boolean","description":"New whitelisted flag."}},"required":["id"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Replace the upstream OAuth audience sent for this client. Omit to leave unchanged.","pattern":"^[!-~]+$","maxLength":512},"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Replace the explicit upstream OAuth scopes for this client. Omit to leave unchanged."},"token_endpoint_auth_method":{"type":"string","description":"Change how the client authenticates at the issuer's token endpoint.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"admin_auth_header_Authorization":{"type":"apiKey","description":"Admin session auth for admin endpoints. Cookie-only credential; session is validated against Google on every request.","name":"Authorization","in":"header"},"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operations supporting admin tasks, protected by Google workspace auth."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file diff --git a/server/gen/http/openapi3.yaml b/server/gen/http/openapi3.yaml index 20fd458cf9..80a8898614 100644 --- a/server/gen/http/openapi3.yaml +++ b/server/gen/http/openapi3.yaml @@ -6,19 +6,300 @@ info: servers: - url: https://app.getgram.ai paths: - /admin/diagnostics.poke: + /admin/auth.callback: get: tags: - admin - summary: poke admin - operationId: admin#poke + summary: callback admin + operationId: admin#callback + parameters: + - name: code + in: query + description: The authorization code returned by the provider on success + allowEmptyValue: true + schema: + type: string + description: The authorization code returned by the provider on success + - name: state + in: query + description: The state parameter returned, which should match the one generated in the login step + allowEmptyValue: true + required: true + schema: + type: string + description: The state parameter returned, which should match the one generated in the login step + - name: error + in: query + description: OAuth error code returned by the provider (e.g. login_required for prompt=none failures) + allowEmptyValue: true + schema: + type: string + description: OAuth error code returned by the provider (e.g. login_required for prompt=none failures) + - name: error_description + in: query + description: Human-readable OAuth error description + allowEmptyValue: true + schema: + type: string + description: Human-readable OAuth error description + - name: gram_admin_login_state + in: cookie + description: The state cookie value for CSRF sanity checking against the state parameter + allowEmptyValue: true + schema: + type: string + description: The state cookie value for CSRF sanity checking against the state parameter + responses: + "307": + description: Temporary Redirect response. + headers: + Location: + description: The URL to redirect the client to after processing the callback + schema: + type: string + description: The URL to redirect the client to after processing the callback + Set-Cookie: + description: Admin session cookie + schema: + type: string + description: Admin session cookie + "400": + description: 'bad_request: request is invalid' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "401": + description: 'unauthorized: unauthorized access' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "403": + description: 'forbidden: permission denied' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "404": + description: 'not_found: resource not found' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "409": + description: 'conflict: resource already exists' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "415": + description: 'unsupported_media: unsupported media type' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "422": + description: 'invalid: request contains one or more invalidation fields' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "500": + description: 'unexpected: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "502": + description: 'gateway_error: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /admin/auth.login: + get: + tags: + - admin + summary: login admin + operationId: admin#login + parameters: + - name: return_to + in: query + description: Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted. + allowEmptyValue: true + schema: + type: string + description: Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted. + - name: prompt + in: query + description: Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication. + allowEmptyValue: true + schema: + type: string + description: Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication. + responses: + "307": + description: Temporary Redirect response. + headers: + Location: + description: The URL to redirect the user to for Google authentication + schema: + type: string + description: The URL to redirect the user to for Google authentication + Set-Cookie: + description: CSRF state cookie for sanity-checking the callback + schema: + type: string + description: CSRF state cookie for sanity-checking the callback + "400": + description: 'bad_request: request is invalid' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "401": + description: 'unauthorized: unauthorized access' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "403": + description: 'forbidden: permission denied' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "404": + description: 'not_found: resource not found' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "409": + description: 'conflict: resource already exists' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "415": + description: 'unsupported_media: unsupported media type' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "422": + description: 'invalid: request contains one or more invalidation fields' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "500": + description: 'unexpected: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "502": + description: 'gateway_error: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /admin/auth.logout: + post: + tags: + - admin + summary: logout admin + operationId: admin#logout + parameters: + - name: gram_admin + in: cookie + description: The session cookie value to clear for logging out + allowEmptyValue: true + schema: + type: string + description: The session cookie value to clear for logging out + responses: + "204": + description: No Content response. + "400": + description: 'bad_request: request is invalid' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "401": + description: 'unauthorized: unauthorized access' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "403": + description: 'forbidden: permission denied' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "404": + description: 'not_found: resource not found' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "409": + description: 'conflict: resource already exists' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "415": + description: 'unsupported_media: unsupported media type' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "422": + description: 'invalid: request contains one or more invalidation fields' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "500": + description: 'unexpected: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "502": + description: 'gateway_error: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /admin/organization.get: + get: + tags: + - admin + summary: getOrganization admin + description: Returns full admin details for a single organization by id or slug. + operationId: adminGetOrganization + parameters: + - name: id_or_slug + in: query + description: Organization ID or slug. + allowEmptyValue: true + required: true + schema: + type: string + description: Organization ID or slug. responses: "200": description: OK response. content: application/json: schema: - $ref: '#/components/schemas/PokeResponseBody' + $ref: '#/components/schemas/AdminOrganization' "400": description: 'bad_request: request is invalid' content: @@ -73,6 +354,436 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' + security: + - admin_auth_header_Authorization: [] + /admin/organization.members: + get: + tags: + - admin + summary: listOrganizationMembers admin + description: Lists members of an organization (admin view, no auth scoping). + operationId: adminListOrganizationMembers + parameters: + - name: organization_id + in: query + description: Organization ID. + allowEmptyValue: true + required: true + schema: + type: string + description: Organization ID. + responses: + "200": + description: OK response. + content: + application/json: + schema: + $ref: '#/components/schemas/AdminListOrganizationMembersResult' + "400": + description: 'bad_request: request is invalid' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "401": + description: 'unauthorized: unauthorized access' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "403": + description: 'forbidden: permission denied' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "404": + description: 'not_found: resource not found' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "409": + description: 'conflict: resource already exists' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "415": + description: 'unsupported_media: unsupported media type' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "422": + description: 'invalid: request contains one or more invalidation fields' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "500": + description: 'unexpected: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "502": + description: 'gateway_error: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - admin_auth_header_Authorization: [] + /admin/organization.projects: + get: + tags: + - admin + summary: listOrganizationProjects admin + description: Lists projects belonging to an organization (admin view, no auth scoping). + operationId: adminListOrganizationProjects + parameters: + - name: organization_id + in: query + description: Organization ID. + allowEmptyValue: true + required: true + schema: + type: string + description: Organization ID. + responses: + "200": + description: OK response. + content: + application/json: + schema: + $ref: '#/components/schemas/AdminListOrganizationProjectsResult' + "400": + description: 'bad_request: request is invalid' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "401": + description: 'unauthorized: unauthorized access' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "403": + description: 'forbidden: permission denied' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "404": + description: 'not_found: resource not found' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "409": + description: 'conflict: resource already exists' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "415": + description: 'unsupported_media: unsupported media type' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "422": + description: 'invalid: request contains one or more invalidation fields' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "500": + description: 'unexpected: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "502": + description: 'gateway_error: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - admin_auth_header_Authorization: [] + /admin/organization.update: + post: + tags: + - admin + summary: updateOrganization admin + description: Updates admin-managed fields on an organization. At least one of account_type or whitelisted must be supplied. + operationId: adminUpdateOrganization + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateOrganizationRequestBody' + responses: + "200": + description: OK response. + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrganization' + "400": + description: 'bad_request: request is invalid' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "401": + description: 'unauthorized: unauthorized access' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "403": + description: 'forbidden: permission denied' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "404": + description: 'not_found: resource not found' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "409": + description: 'conflict: resource already exists' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "415": + description: 'unsupported_media: unsupported media type' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "422": + description: 'invalid: request contains one or more invalidation fields' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "500": + description: 'unexpected: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "502": + description: 'gateway_error: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - admin_auth_header_Authorization: [] + /admin/organizations.list: + get: + description: Lists organizations for admin operations with optional search and filters. + operationId: adminListOrganizations + parameters: + - allowEmptyValue: true + description: Search term applied to name and slug (case-insensitive substring). + in: query + name: q + schema: + description: Search term applied to name and slug (case-insensitive substring). + type: string + - allowEmptyValue: true + description: Filter by gram_account_type (e.g. free, pro, enterprise). + in: query + name: account_type + schema: + description: Filter by gram_account_type (e.g. free, pro, enterprise). + type: string + - allowEmptyValue: true + description: Include organizations with disabled_at set. Defaults to false. + in: query + name: include_disabled + schema: + description: Include organizations with disabled_at set. Defaults to false. + type: boolean + - allowEmptyValue: true + description: 'Pagination cursor: id of the last item from the previous page.' + in: query + name: cursor + schema: + description: 'Pagination cursor: id of the last item from the previous page.' + type: string + - allowEmptyValue: true + description: Page size (default 50, max 100). + in: query + name: limit + schema: + description: Page size (default 50, max 100). + format: int64 + type: integer + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/AdminListOrganizationsResult' + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - admin_auth_header_Authorization: [] + summary: listOrganizations admin + tags: + - admin + x-speakeasy-pagination: + inputs: + - in: parameters + name: cursor + type: cursor + outputs: + nextCursor: $.next_cursor + type: cursor + /admin/project.get: + get: + tags: + - admin + summary: getProject admin + description: Returns full admin details for a project by id or slug, including aggregated counts of child resources. + operationId: adminGetProject + parameters: + - name: id_or_slug + in: query + description: Project ID or slug. + allowEmptyValue: true + required: true + schema: + type: string + description: Project ID or slug. + responses: + "200": + description: OK response. + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProjectDetail' + "400": + description: 'bad_request: request is invalid' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "401": + description: 'unauthorized: unauthorized access' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "403": + description: 'forbidden: permission denied' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "404": + description: 'not_found: resource not found' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "409": + description: 'conflict: resource already exists' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "415": + description: 'unsupported_media: unsupported media type' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "422": + description: 'invalid: request contains one or more invalidation fields' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "500": + description: 'unexpected: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + "502": + description: 'gateway_error: an unexpected error occurred' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + security: + - admin_auth_header_Authorization: [] /rpc/access.createRole: post: description: Create a new custom role. @@ -1349,10 +2060,10 @@ paths: x-speakeasy-name-override: resolveChallenge x-speakeasy-react-hook: name: ResolveChallenge - /rpc/access.updateMemberRole: + /rpc/access.updateMemberRoles: put: - description: Change a team member's role assignment. - operationId: updateMemberRole + description: Update a team member's role assignments. + operationId: updateMemberRoles parameters: - allowEmptyValue: true description: API Key header @@ -1372,7 +2083,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateMemberRoleForm' + $ref: '#/components/schemas/UpdateMemberRolesForm' required: true responses: "200": @@ -1438,12 +2149,12 @@ paths: security: - apikey_header_Gram-Key: [] - session_header_Gram-Session: [] - summary: updateMemberRole access + summary: updateMemberRoles access tags: - access - x-speakeasy-name-override: updateMemberRole + x-speakeasy-name-override: updateMemberRoles x-speakeasy-react-hook: - name: UpdateMemberRole + name: UpdateMemberRoles /rpc/access.updateRole: put: description: Update an existing custom role. @@ -4798,6 +5509,14 @@ paths: schema: description: Filter by external user ID type: string + - allowEmptyValue: true + description: Filter to chats produced by this assistant + in: query + name: assistant_id + schema: + description: Filter to chats produced by this assistant + format: uuid + type: string - allowEmptyValue: true description: Filter by resolution status in: query @@ -4805,6 +5524,17 @@ paths: schema: description: Filter by resolution status type: string + - allowEmptyValue: true + description: 'Filter by whether chat has risk findings: ''true'', ''false'', or empty for no filter.' + in: query + name: has_risk + schema: + description: 'Filter by whether chat has risk findings: ''true'', ''false'', or empty for no filter.' + enum: + - "" + - "true" + - "false" + type: string - allowEmptyValue: true description: Filter chats created after this timestamp (ISO 8601) in: query @@ -6426,17 +7156,122 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: getDeployment deployments + summary: getDeployment deployments + tags: + - deployments + x-speakeasy-name-override: getById + x-speakeasy-react-hook: + name: Deployment + /rpc/deployments.latest: + get: + description: Get the latest deployment for a project. + operationId: getLatestDeployment + parameters: + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string + - allowEmptyValue: true + description: Session header + in: header + name: Gram-Session + schema: + description: Session header + type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/GetLatestDeploymentResult' + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + summary: getLatestDeployment deployments tags: - deployments - x-speakeasy-name-override: getById + x-speakeasy-name-override: latest x-speakeasy-react-hook: - name: Deployment - /rpc/deployments.latest: + name: LatestDeployment + /rpc/deployments.list: get: - description: Get the latest deployment for a project. - operationId: getLatestDeployment + description: List all deployments in descending order of creation. + operationId: listDeployments parameters: + - allowEmptyValue: true + description: The cursor to fetch results from + in: query + name: cursor + schema: + description: The cursor to fetch results from + type: string - allowEmptyValue: true description: API Key header in: header @@ -6463,7 +7298,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetLatestDeploymentResult' + $ref: '#/components/schemas/ListDeploymentResult' description: OK response. "400": content: @@ -6524,17 +7359,25 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: getLatestDeployment deployments + summary: listDeployments deployments tags: - deployments - x-speakeasy-name-override: latest + x-speakeasy-name-override: list x-speakeasy-react-hook: - name: LatestDeployment - /rpc/deployments.list: + name: ListDeployments + /rpc/deployments.logs: get: - description: List all deployments in descending order of creation. - operationId: listDeployments + description: Get logs for a deployment. + operationId: getDeploymentLogs parameters: + - allowEmptyValue: true + description: The ID of the deployment + in: query + name: deployment_id + required: true + schema: + description: The ID of the deployment + type: string - allowEmptyValue: true description: The cursor to fetch results from in: query @@ -6568,7 +7411,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListDeploymentResult' + $ref: '#/components/schemas/GetDeploymentLogsResult' description: OK response. "400": content: @@ -6629,32 +7472,17 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: listDeployments deployments + summary: getDeploymentLogs deployments tags: - deployments - x-speakeasy-name-override: list + x-speakeasy-name-override: logs x-speakeasy-react-hook: - name: ListDeployments - /rpc/deployments.logs: - get: - description: Get logs for a deployment. - operationId: getDeploymentLogs + name: DeploymentLogs + /rpc/deployments.redeploy: + post: + description: Redeploys an existing deployment. + operationId: redeployDeployment parameters: - - allowEmptyValue: true - description: The ID of the deployment - in: query - name: deployment_id - required: true - schema: - description: The ID of the deployment - type: string - - allowEmptyValue: true - description: The cursor to fetch results from - in: query - name: cursor - schema: - description: The cursor to fetch results from - type: string - allowEmptyValue: true description: API Key header in: header @@ -6676,12 +7504,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RedeployRequestBody' + required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/GetDeploymentLogsResult' + $ref: '#/components/schemas/RedeployResult' description: OK response. "400": content: @@ -6742,24 +7576,17 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: getDeploymentLogs deployments + summary: redeploy deployments tags: - deployments - x-speakeasy-name-override: logs + x-speakeasy-name-override: redeployDeployment x-speakeasy-react-hook: - name: DeploymentLogs - /rpc/deployments.redeploy: - post: - description: Redeploys an existing deployment. - operationId: redeployDeployment + name: RedeployDeployment + /rpc/domain.delete: + delete: + description: Delete a custom domain + operationId: deleteDomain parameters: - - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - allowEmptyValue: true description: Session header in: header @@ -6767,25 +7594,8 @@ paths: schema: description: Session header type: string - - allowEmptyValue: true - description: project header - in: header - name: Gram-Project - schema: - description: project header - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RedeployRequestBody' - required: true responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/RedeployResult' description: OK response. "400": content: @@ -6842,20 +7652,17 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - summary: redeploy deployments + - session_header_Gram-Session: [] + summary: deleteDomain domains tags: - - deployments - x-speakeasy-name-override: redeployDeployment + - domains + x-speakeasy-name-override: deleteDomain x-speakeasy-react-hook: - name: RedeployDeployment - /rpc/domain.delete: - delete: - description: Delete a custom domain - operationId: deleteDomain + name: deleteDomain + /rpc/domain.get: + get: + description: Get the custom domain for an organization + operationId: getDomain parameters: - allowEmptyValue: true description: Session header @@ -6866,6 +7673,10 @@ paths: type: string responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/CustomDomain' description: OK response. "400": content: @@ -6923,16 +7734,16 @@ paths: description: 'gateway_error: an unexpected error occurred' security: - session_header_Gram-Session: [] - summary: deleteDomain domains + summary: getDomain domains tags: - domains - x-speakeasy-name-override: deleteDomain + x-speakeasy-name-override: getDomain x-speakeasy-react-hook: - name: deleteDomain - /rpc/domain.get: + name: getDomain + /rpc/domain.listMcpEndpoints: get: - description: Get the custom domain for an organization - operationId: getDomain + description: List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through. + operationId: listCustomDomainMcpEndpoints parameters: - allowEmptyValue: true description: Session header @@ -6946,7 +7757,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CustomDomain' + $ref: '#/components/schemas/ListCustomDomainMcpEndpointsResult' description: OK response. "400": content: @@ -7004,12 +7815,12 @@ paths: description: 'gateway_error: an unexpected error occurred' security: - session_header_Gram-Session: [] - summary: getDomain domains + summary: listMcpEndpoints domains tags: - domains - x-speakeasy-name-override: getDomain + x-speakeasy-name-override: listMcpEndpoints x-speakeasy-react-hook: - name: getDomain + name: CustomDomainMcpEndpoints /rpc/domain.register: post: description: Create a custom domain for an organization @@ -15532,24 +16343,133 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: createServer remoteMcp + summary: createServer remoteMcp + tags: + - remoteMcp + x-speakeasy-name-override: createServer + x-speakeasy-react-hook: + name: CreateRemoteMcpServer + /rpc/remoteMcp.deleteServer: + delete: + description: Delete a remote MCP server + operationId: deleteRemoteMcpServer + parameters: + - allowEmptyValue: true + description: The ID of the remote MCP server to delete + in: query + name: id + required: true + schema: + description: The ID of the remote MCP server to delete + type: string + - allowEmptyValue: true + description: Session header + in: header + name: Gram-Session + schema: + description: Session header + type: string + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + responses: + "200": + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] + summary: deleteServer remoteMcp tags: - remoteMcp - x-speakeasy-name-override: createServer + x-speakeasy-name-override: deleteServer x-speakeasy-react-hook: - name: CreateRemoteMcpServer - /rpc/remoteMcp.deleteServer: - delete: - description: Delete a remote MCP server - operationId: deleteRemoteMcpServer + name: DeleteRemoteMcpServer + /rpc/remoteMcp.getServer: + get: + description: Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided. + operationId: getRemoteMcpServer parameters: - allowEmptyValue: true - description: The ID of the remote MCP server to delete + description: The ID of the remote MCP server. Mutually exclusive with slug. in: query name: id - required: true schema: - description: The ID of the remote MCP server to delete + description: The ID of the remote MCP server. Mutually exclusive with slug. + format: uuid + type: string + - allowEmptyValue: true + description: The slug of the remote MCP server. Mutually exclusive with id. + in: query + name: slug + schema: + description: The slug of the remote MCP server. Mutually exclusive with id. type: string - allowEmptyValue: true description: Session header @@ -15574,6 +16494,10 @@ paths: type: string responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/RemoteMcpServer' description: OK response. "400": content: @@ -15634,32 +16558,17 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: deleteServer remoteMcp + summary: getServer remoteMcp tags: - remoteMcp - x-speakeasy-name-override: deleteServer + x-speakeasy-name-override: getServer x-speakeasy-react-hook: - name: DeleteRemoteMcpServer - /rpc/remoteMcp.getServer: + name: GetRemoteMcpServer + /rpc/remoteMcp.listServers: get: - description: Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided. - operationId: getRemoteMcpServer + description: List all remote MCP servers for a project + operationId: listRemoteMcpServers parameters: - - allowEmptyValue: true - description: The ID of the remote MCP server. Mutually exclusive with slug. - in: query - name: id - schema: - description: The ID of the remote MCP server. Mutually exclusive with slug. - format: uuid - type: string - - allowEmptyValue: true - description: The slug of the remote MCP server. Mutually exclusive with id. - in: query - name: slug - schema: - description: The slug of the remote MCP server. Mutually exclusive with id. - type: string - allowEmptyValue: true description: Session header in: header @@ -15686,7 +16595,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RemoteMcpServer' + $ref: '#/components/schemas/ListServersResult' description: OK response. "400": content: @@ -15747,16 +16656,16 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: getServer remoteMcp + summary: listServers remoteMcp tags: - remoteMcp - x-speakeasy-name-override: getServer + x-speakeasy-name-override: listServers x-speakeasy-react-hook: - name: GetRemoteMcpServer - /rpc/remoteMcp.listServers: - get: - description: List all remote MCP servers for a project - operationId: listRemoteMcpServers + name: RemoteMcpServers + /rpc/remoteMcp.updateServer: + post: + description: Update a remote MCP server + operationId: updateRemoteMcpServer parameters: - allowEmptyValue: true description: Session header @@ -15779,12 +16688,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateServerForm' + required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ListServersResult' + $ref: '#/components/schemas/RemoteMcpServer' description: OK response. "400": content: @@ -15845,16 +16760,16 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: listServers remoteMcp + summary: updateServer remoteMcp tags: - remoteMcp - x-speakeasy-name-override: listServers + x-speakeasy-name-override: updateServer x-speakeasy-react-hook: - name: RemoteMcpServers - /rpc/remoteMcp.updateServer: + name: UpdateRemoteMcpServer + /rpc/remoteMcp.verifyURL: post: - description: Update a remote MCP server - operationId: updateRemoteMcpServer + description: Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope. + operationId: verifyRemoteMcpURL parameters: - allowEmptyValue: true description: Session header @@ -15881,14 +16796,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateServerForm' + $ref: '#/components/schemas/VerifyURLForm' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/RemoteMcpServer' + $ref: '#/components/schemas/VerifyURLResult' description: OK response. "400": content: @@ -15949,16 +16864,16 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: updateServer remoteMcp + summary: verifyURL remoteMcp tags: - remoteMcp - x-speakeasy-name-override: updateServer + x-speakeasy-name-override: verifyURL x-speakeasy-react-hook: - name: UpdateRemoteMcpServer - /rpc/remoteMcp.verifyURL: + name: VerifyRemoteMcpURL + /rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider: post: - description: Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope. - operationId: verifyRemoteMcpURL + description: 'Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider''s stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.' + operationId: cloneClientFromOAuthProxyProvider parameters: - allowEmptyValue: true description: Session header @@ -15985,14 +16900,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/VerifyURLForm' + $ref: '#/components/schemas/CloneClientFromOAuthProxyProviderForm' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/VerifyURLResult' + $ref: '#/components/schemas/RemoteSessionClient' description: OK response. "400": content: @@ -16053,16 +16968,16 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: verifyURL remoteMcp + summary: cloneClientFromOAuthProxyProvider remoteSessionClients tags: - - remoteMcp - x-speakeasy-name-override: verifyURL + - remoteSessionClients + x-speakeasy-name-override: cloneClientFromOAuthProxyProvider x-speakeasy-react-hook: - name: VerifyRemoteMcpURL - /rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider: + name: CloneClientFromOAuthProxyProvider + /rpc/remoteSessionClients.create: post: - description: 'Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider''s stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.' - operationId: cloneClientFromOAuthProxyProvider + description: Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer. + operationId: createRemoteSessionClient parameters: - allowEmptyValue: true description: Session header @@ -16089,7 +17004,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CloneClientFromOAuthProxyProviderForm' + $ref: '#/components/schemas/CreateRemoteSessionClientForm' required: true responses: "200": @@ -16157,17 +17072,129 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: cloneClientFromOAuthProxyProvider remoteSessionClients + summary: createRemoteSessionClient remoteSessionClients tags: - remoteSessionClients - x-speakeasy-name-override: cloneClientFromOAuthProxyProvider + x-speakeasy-name-override: create x-speakeasy-react-hook: - name: CloneClientFromOAuthProxyProvider - /rpc/remoteSessionClients.create: - post: - description: Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer. - operationId: createRemoteSessionClient + name: CreateRemoteSessionClient + /rpc/remoteSessionClients.delete: + delete: + description: Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate. + operationId: deleteRemoteSessionClient parameters: + - allowEmptyValue: true + description: The remote_session_client id. + in: query + name: id + required: true + schema: + description: The remote_session_client id. + format: uuid + type: string + - allowEmptyValue: true + description: Session header + in: header + name: Gram-Session + schema: + description: Session header + type: string + - allowEmptyValue: true + description: API Key header + in: header + name: Gram-Key + schema: + description: API Key header + type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + responses: + "200": + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] + summary: deleteRemoteSessionClient remoteSessionClients + tags: + - remoteSessionClients + x-speakeasy-name-override: delete + x-speakeasy-react-hook: + name: DeleteRemoteSessionClient + /rpc/remoteSessionClients.get: + get: + description: Get a remote_session_client by id. + operationId: getRemoteSessionClient + parameters: + - allowEmptyValue: true + description: The remote_session_client id. + in: query + name: id + required: true + schema: + description: The remote_session_client id. + format: uuid + type: string - allowEmptyValue: true description: Session header in: header @@ -16189,12 +17216,6 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateRemoteSessionClientForm' - required: true responses: "200": content: @@ -16261,26 +17282,48 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: createRemoteSessionClient remoteSessionClients + summary: getRemoteSessionClient remoteSessionClients tags: - remoteSessionClients - x-speakeasy-name-override: create + x-speakeasy-name-override: get x-speakeasy-react-hook: - name: CreateRemoteSessionClient - /rpc/remoteSessionClients.delete: - delete: - description: Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate. - operationId: deleteRemoteSessionClient + name: RemoteSessionClient + /rpc/remoteSessionClients.list: + get: + description: List remote_session_clients in the caller's project. + operationId: listRemoteSessionClients parameters: - allowEmptyValue: true - description: The remote_session_client id. + description: Filter to clients registered with this issuer. in: query - name: id - required: true + name: remote_session_issuer_id schema: - description: The remote_session_client id. + description: Filter to clients registered with this issuer. + format: uuid + type: string + - allowEmptyValue: true + description: Filter to clients paired with this user_session_issuer. + in: query + name: user_session_issuer_id + schema: + description: Filter to clients paired with this user_session_issuer. format: uuid type: string + - allowEmptyValue: true + description: Pagination cursor. + in: query + name: cursor + schema: + description: Pagination cursor. + type: string + - allowEmptyValue: true + description: Page size (default 50, max 100). + in: query + name: limit + schema: + description: Page size (default 50, max 100). + format: int64 + type: integer - allowEmptyValue: true description: Session header in: header @@ -16304,6 +17347,10 @@ paths: type: string responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ListRemoteSessionClientsResult' description: OK response. "400": content: @@ -16364,26 +17411,25 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: deleteRemoteSessionClient remoteSessionClients + summary: listRemoteSessionClients remoteSessionClients tags: - remoteSessionClients - x-speakeasy-name-override: delete + x-speakeasy-name-override: list + x-speakeasy-pagination: + inputs: + - in: parameters + name: cursor + type: cursor + outputs: + nextCursor: $.next_cursor + type: cursor x-speakeasy-react-hook: - name: DeleteRemoteSessionClient - /rpc/remoteSessionClients.get: - get: - description: Get a remote_session_client by id. - operationId: getRemoteSessionClient + name: RemoteSessionClients + /rpc/remoteSessionClients.update: + post: + description: Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client. + operationId: updateRemoteSessionClient parameters: - - allowEmptyValue: true - description: The remote_session_client id. - in: query - name: id - required: true - schema: - description: The remote_session_client id. - format: uuid - type: string - allowEmptyValue: true description: Session header in: header @@ -16405,6 +17451,12 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRemoteSessionClientForm' + required: true responses: "200": content: @@ -16471,48 +17523,17 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: getRemoteSessionClient remoteSessionClients + summary: updateRemoteSessionClient remoteSessionClients tags: - remoteSessionClients - x-speakeasy-name-override: get + x-speakeasy-name-override: update x-speakeasy-react-hook: - name: RemoteSessionClient - /rpc/remoteSessionClients.list: - get: - description: List remote_session_clients in the caller's project. - operationId: listRemoteSessionClients + name: UpdateRemoteSessionClient + /rpc/remoteSessionIssuers.create: + post: + description: Create a new remote_session_issuer. + operationId: createRemoteSessionIssuer parameters: - - allowEmptyValue: true - description: Filter to clients registered with this issuer. - in: query - name: remote_session_issuer_id - schema: - description: Filter to clients registered with this issuer. - format: uuid - type: string - - allowEmptyValue: true - description: Filter to clients paired with this user_session_issuer. - in: query - name: user_session_issuer_id - schema: - description: Filter to clients paired with this user_session_issuer. - format: uuid - type: string - - allowEmptyValue: true - description: Pagination cursor. - in: query - name: cursor - schema: - description: Pagination cursor. - type: string - - allowEmptyValue: true - description: Page size (default 50, max 100). - in: query - name: limit - schema: - description: Page size (default 50, max 100). - format: int64 - type: integer - allowEmptyValue: true description: Session header in: header @@ -16534,12 +17555,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRemoteSessionIssuerForm' + required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ListRemoteSessionClientsResult' + $ref: '#/components/schemas/RemoteSessionIssuer' description: OK response. "400": content: @@ -16600,25 +17627,26 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: listRemoteSessionClients remoteSessionClients + summary: createRemoteSessionIssuer remoteSessionIssuers tags: - - remoteSessionClients - x-speakeasy-name-override: list - x-speakeasy-pagination: - inputs: - - in: parameters - name: cursor - type: cursor - outputs: - nextCursor: $.next_cursor - type: cursor + - remoteSessionIssuers + x-speakeasy-name-override: create x-speakeasy-react-hook: - name: RemoteSessionClients - /rpc/remoteSessionClients.update: - post: - description: Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client. - operationId: updateRemoteSessionClient + name: CreateRemoteSessionIssuer + /rpc/remoteSessionIssuers.delete: + delete: + description: Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it. + operationId: deleteRemoteSessionIssuer parameters: + - allowEmptyValue: true + description: The remote_session_issuer id. + in: query + name: id + required: true + schema: + description: The remote_session_issuer id. + format: uuid + type: string - allowEmptyValue: true description: Session header in: header @@ -16640,18 +17668,8 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRemoteSessionClientForm' - required: true responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/RemoteSessionClient' description: OK response. "400": content: @@ -16712,16 +17730,16 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: updateRemoteSessionClient remoteSessionClients + summary: deleteRemoteSessionIssuer remoteSessionIssuers tags: - - remoteSessionClients - x-speakeasy-name-override: update + - remoteSessionIssuers + x-speakeasy-name-override: delete x-speakeasy-react-hook: - name: UpdateRemoteSessionClient - /rpc/remoteSessionIssuers.create: + name: DeleteRemoteSessionIssuer + /rpc/remoteSessionIssuers.discover: post: - description: Create a new remote_session_issuer. - operationId: createRemoteSessionIssuer + description: Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence. + operationId: discoverRemoteSessionIssuer parameters: - allowEmptyValue: true description: Session header @@ -16748,14 +17766,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateRemoteSessionIssuerForm' + $ref: '#/components/schemas/DiscoverRemoteSessionIssuerRequestBody' required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/RemoteSessionIssuer' + $ref: '#/components/schemas/RemoteSessionIssuerDraft' description: OK response. "400": content: @@ -16816,26 +17834,32 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: createRemoteSessionIssuer remoteSessionIssuers + summary: discoverRemoteSessionIssuer remoteSessionIssuers tags: - remoteSessionIssuers - x-speakeasy-name-override: create + x-speakeasy-name-override: discover x-speakeasy-react-hook: - name: CreateRemoteSessionIssuer - /rpc/remoteSessionIssuers.delete: - delete: - description: Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it. - operationId: deleteRemoteSessionIssuer + name: DiscoverRemoteSessionIssuer + /rpc/remoteSessionIssuers.get: + get: + description: Get a remote_session_issuer by id or by slug. Provide exactly one. + operationId: getRemoteSessionIssuer parameters: - allowEmptyValue: true description: The remote_session_issuer id. in: query name: id - required: true schema: description: The remote_session_issuer id. format: uuid type: string + - allowEmptyValue: true + description: The remote_session_issuer slug. + in: query + name: slug + schema: + description: The remote_session_issuer slug. + type: string - allowEmptyValue: true description: Session header in: header @@ -16859,6 +17883,10 @@ paths: type: string responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/RemoteSessionIssuer' description: OK response. "400": content: @@ -16919,17 +17947,32 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: deleteRemoteSessionIssuer remoteSessionIssuers + summary: getRemoteSessionIssuer remoteSessionIssuers tags: - remoteSessionIssuers - x-speakeasy-name-override: delete + x-speakeasy-name-override: get x-speakeasy-react-hook: - name: DeleteRemoteSessionIssuer - /rpc/remoteSessionIssuers.discover: - post: - description: Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence. - operationId: discoverRemoteSessionIssuer + name: RemoteSessionIssuer + /rpc/remoteSessionIssuers.list: + get: + description: List remote_session_issuers in the caller's project. + operationId: listRemoteSessionIssuers parameters: + - allowEmptyValue: true + description: Pagination cursor. + in: query + name: cursor + schema: + description: Pagination cursor. + type: string + - allowEmptyValue: true + description: Page size (default 50, max 100). + in: query + name: limit + schema: + description: Page size (default 50, max 100). + format: int64 + type: integer - allowEmptyValue: true description: Session header in: header @@ -16951,18 +17994,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DiscoverRemoteSessionIssuerRequestBody' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/RemoteSessionIssuerDraft' + $ref: '#/components/schemas/ListRemoteSessionIssuersResult' description: OK response. "400": content: @@ -17023,32 +18060,25 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: discoverRemoteSessionIssuer remoteSessionIssuers + summary: listRemoteSessionIssuers remoteSessionIssuers tags: - remoteSessionIssuers - x-speakeasy-name-override: discover + x-speakeasy-name-override: list + x-speakeasy-pagination: + inputs: + - in: parameters + name: cursor + type: cursor + outputs: + nextCursor: $.next_cursor + type: cursor x-speakeasy-react-hook: - name: DiscoverRemoteSessionIssuer - /rpc/remoteSessionIssuers.get: - get: - description: Get a remote_session_issuer by id or by slug. Provide exactly one. - operationId: getRemoteSessionIssuer + name: RemoteSessionIssuers + /rpc/remoteSessionIssuers.update: + post: + description: Update fields on an existing remote_session_issuer. + operationId: updateRemoteSessionIssuer parameters: - - allowEmptyValue: true - description: The remote_session_issuer id. - in: query - name: id - schema: - description: The remote_session_issuer id. - format: uuid - type: string - - allowEmptyValue: true - description: The remote_session_issuer slug. - in: query - name: slug - schema: - description: The remote_session_issuer slug. - type: string - allowEmptyValue: true description: Session header in: header @@ -17070,6 +18100,12 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRemoteSessionIssuerForm' + required: true responses: "200": content: @@ -17136,17 +18172,32 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: getRemoteSessionIssuer remoteSessionIssuers + summary: updateRemoteSessionIssuer remoteSessionIssuers tags: - remoteSessionIssuers - x-speakeasy-name-override: get + x-speakeasy-name-override: update x-speakeasy-react-hook: - name: RemoteSessionIssuer - /rpc/remoteSessionIssuers.list: + name: UpdateRemoteSessionIssuer + /rpc/remoteSessions.list: get: - description: List remote_session_issuers in the caller's project. - operationId: listRemoteSessionIssuers + description: List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes). + operationId: listRemoteSessions parameters: + - allowEmptyValue: true + description: Exact-match filter on subject URN. + in: query + name: subject_urn + schema: + description: Exact-match filter on subject URN. + type: string + - allowEmptyValue: true + description: Filter by remote_session_client id. + in: query + name: remote_session_client_id + schema: + description: Filter by remote_session_client id. + format: uuid + type: string - allowEmptyValue: true description: Pagination cursor. in: query @@ -17188,7 +18239,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListRemoteSessionIssuersResult' + $ref: '#/components/schemas/ListRemoteSessionsResult' description: OK response. "400": content: @@ -17249,9 +18300,9 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: listRemoteSessionIssuers remoteSessionIssuers + summary: listRemoteSessions remoteSessions tags: - - remoteSessionIssuers + - remoteSessions x-speakeasy-name-override: list x-speakeasy-pagination: inputs: @@ -17262,12 +18313,21 @@ paths: nextCursor: $.next_cursor type: cursor x-speakeasy-react-hook: - name: RemoteSessionIssuers - /rpc/remoteSessionIssuers.update: + name: RemoteSessions + /rpc/remoteSessions.revoke: post: - description: Update fields on an existing remote_session_issuer. - operationId: updateRemoteSessionIssuer + description: Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge. + operationId: revokeRemoteSession parameters: + - allowEmptyValue: true + description: The remote_session id. + in: query + name: id + required: true + schema: + description: The remote_session id. + format: uuid + type: string - allowEmptyValue: true description: Session header in: header @@ -17289,18 +18349,8 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRemoteSessionIssuerForm' - required: true responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/RemoteSessionIssuer' description: OK response. "400": content: @@ -17361,47 +18411,39 @@ paths: session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: updateRemoteSessionIssuer remoteSessionIssuers + summary: revokeRemoteSession remoteSessions tags: - - remoteSessionIssuers - x-speakeasy-name-override: update + - remoteSessions + x-speakeasy-name-override: revoke x-speakeasy-react-hook: - name: UpdateRemoteSessionIssuer - /rpc/remoteSessions.list: + name: RevokeRemoteSession + /rpc/resources.list: get: - description: List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes). - operationId: listRemoteSessions + description: List all resources for a project + operationId: listResources parameters: - allowEmptyValue: true - description: Exact-match filter on subject URN. + description: The cursor to fetch results from in: query - name: subject_urn + name: cursor schema: - description: Exact-match filter on subject URN. + description: The cursor to fetch results from type: string - allowEmptyValue: true - description: Filter by remote_session_client id. + description: The number of resources to return per page in: query - name: remote_session_client_id + name: limit schema: - description: Filter by remote_session_client id. - format: uuid - type: string + description: The number of resources to return per page + format: int32 + type: integer - allowEmptyValue: true - description: Pagination cursor. + description: The deployment ID. If unset, latest deployment will be used. in: query - name: cursor + name: deployment_id schema: - description: Pagination cursor. + description: The deployment ID. If unset, latest deployment will be used. type: string - - allowEmptyValue: true - description: Page size (default 50, max 100). - in: query - name: limit - schema: - description: Page size (default 50, max 100). - format: int64 - type: integer - allowEmptyValue: true description: Session header in: header @@ -17409,13 +18451,6 @@ paths: schema: description: Session header type: string - - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - allowEmptyValue: true description: project header in: header @@ -17428,7 +18463,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListRemoteSessionsResult' + $ref: '#/components/schemas/ListResourcesResult' description: OK response. "400": content: @@ -17487,35 +18522,23 @@ paths: security: - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - - apikey_header_Gram-Key: [] - project_slug_header_Gram-Project: [] - summary: listRemoteSessions remoteSessions + summary: listResources resources tags: - - remoteSessions + - resources x-speakeasy-name-override: list - x-speakeasy-pagination: - inputs: - - in: parameters - name: cursor - type: cursor - outputs: - nextCursor: $.next_cursor - type: cursor x-speakeasy-react-hook: - name: RemoteSessions - /rpc/remoteSessions.revoke: + name: ListResources + /rpc/risk.approvals.create: post: - description: Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge. - operationId: revokeRemoteSession + description: Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp____` prefix. + operationId: approveShadowMCP parameters: - allowEmptyValue: true - description: The remote_session id. - in: query - name: id - required: true + description: API Key header + in: header + name: Gram-Key schema: - description: The remote_session id. - format: uuid + description: API Key header type: string - allowEmptyValue: true description: Session header @@ -17524,13 +18547,6 @@ paths: schema: description: Session header type: string - - allowEmptyValue: true - description: API Key header - in: header - name: Gram-Key - schema: - description: API Key header - type: string - allowEmptyValue: true description: project header in: header @@ -17538,8 +18554,18 @@ paths: schema: description: project header type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApproveShadowMCPRequestBody' + required: true responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ShadowMCPApproval' description: OK response. "400": content: @@ -17596,42 +18622,46 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: - - project_slug_header_Gram-Project: [] - session_header_Gram-Session: [] - apikey_header_Gram-Key: [] project_slug_header_Gram-Project: [] - summary: revokeRemoteSession remoteSessions + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + summary: approveShadowMCP risk tags: - - remoteSessions - x-speakeasy-name-override: revoke + - risk + x-speakeasy-group: risk.approvals + x-speakeasy-name-override: create x-speakeasy-react-hook: - name: RevokeRemoteSession - /rpc/resources.list: - get: - description: List all resources for a project - operationId: listResources + name: RiskApproveShadowMCP + type: mutation + /rpc/risk.approvals.delete: + delete: + description: Remove a previously-approved shadow-MCP server for a policy. + operationId: revokeShadowMCPApproval parameters: - allowEmptyValue: true - description: The cursor to fetch results from + description: The risk policy ID. in: query - name: cursor + name: policy_id + required: true schema: - description: The cursor to fetch results from + description: The risk policy ID. + format: uuid type: string - allowEmptyValue: true - description: The number of resources to return per page + description: The MCP server identifier to revoke — exactly the value used to approve. in: query - name: limit + name: match + required: true schema: - description: The number of resources to return per page - format: int32 - type: integer + description: The MCP server identifier to revoke — exactly the value used to approve. + type: string - allowEmptyValue: true - description: The deployment ID. If unset, latest deployment will be used. - in: query - name: deployment_id + description: API Key header + in: header + name: Gram-Key schema: - description: The deployment ID. If unset, latest deployment will be used. + description: API Key header type: string - allowEmptyValue: true description: Session header @@ -17649,10 +18679,6 @@ paths: type: string responses: "200": - content: - application/json: - schema: - $ref: '#/components/schemas/ListResourcesResult' description: OK response. "400": content: @@ -17709,19 +18735,29 @@ paths: $ref: '#/components/schemas/Error' description: 'gateway_error: an unexpected error occurred' security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: listResources resources + summary: revokeShadowMCPApproval risk tags: - - resources - x-speakeasy-name-override: list - x-speakeasy-react-hook: - name: ListResources - /rpc/risk.approvals.create: - post: - description: Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp____` prefix. - operationId: approveShadowMCP + - risk + x-speakeasy-group: risk.approvals + x-speakeasy-name-override: delete + /rpc/risk.approvals.list: + get: + description: List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates. + operationId: listShadowMCPApprovals parameters: + - allowEmptyValue: true + description: The risk policy ID. + in: query + name: policy_id + required: true + schema: + description: The risk policy ID. + format: uuid + type: string - allowEmptyValue: true description: API Key header in: header @@ -17743,18 +18779,12 @@ paths: schema: description: project header type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ApproveShadowMCPRequestBody' - required: true responses: "200": content: application/json: schema: - $ref: '#/components/schemas/ShadowMCPApproval' + $ref: '#/components/schemas/ListShadowMCPApprovalsResult' description: OK response. "400": content: @@ -17815,36 +18845,117 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: approveShadowMCP risk + summary: listShadowMCPApprovals risk tags: - risk x-speakeasy-group: risk.approvals - x-speakeasy-name-override: create + x-speakeasy-name-override: list x-speakeasy-react-hook: - name: RiskApproveShadowMCP - type: mutation - /rpc/risk.approvals.delete: - delete: - description: Remove a previously-approved shadow-MCP server for a policy. - operationId: revokeShadowMCPApproval + name: RiskListShadowMCPApprovals + /rpc/risk.capabilities.get: + get: + description: Get server-side risk analysis capabilities for the current project. + operationId: getRiskCapabilities parameters: - allowEmptyValue: true - description: The risk policy ID. - in: query - name: policy_id - required: true + description: API Key header + in: header + name: Gram-Key schema: - description: The risk policy ID. - format: uuid + description: API Key header type: string - allowEmptyValue: true - description: The MCP server identifier to revoke — exactly the value used to approve. - in: query - name: match - required: true + description: Session header + in: header + name: Gram-Session schema: - description: The MCP server identifier to revoke — exactly the value used to approve. + description: Session header type: string + - allowEmptyValue: true + description: project header + in: header + name: Gram-Project + schema: + description: project header + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/RiskCapabilitiesResult' + description: OK response. + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'bad_request: request is invalid' + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unauthorized: unauthorized access' + "403": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'forbidden: permission denied' + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'not_found: resource not found' + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'conflict: resource already exists' + "415": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unsupported_media: unsupported media type' + "422": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'invalid: request contains one or more invalidation fields' + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'unexpected: an unexpected error occurred' + "502": + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + description: 'gateway_error: an unexpected error occurred' + security: + - apikey_header_Gram-Key: [] + project_slug_header_Gram-Project: [] + - project_slug_header_Gram-Project: [] + session_header_Gram-Session: [] + summary: getRiskCapabilities risk + tags: + - risk + x-speakeasy-group: risk.capabilities + x-speakeasy-name-override: get + x-speakeasy-react-hook: + name: RiskCapabilities + /rpc/risk.categories: + get: + description: 'Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.' + operationId: listRiskCategories + parameters: - allowEmptyValue: true description: API Key header in: header @@ -17868,6 +18979,10 @@ paths: type: string responses: "200": + content: + application/json: + schema: + $ref: '#/components/schemas/RiskCategoriesResult' description: OK response. "400": content: @@ -17928,24 +19043,33 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: revokeShadowMCPApproval risk + summary: listRiskCategories risk tags: - risk - x-speakeasy-group: risk.approvals - x-speakeasy-name-override: delete - /rpc/risk.approvals.list: + x-speakeasy-group: risk.categories + x-speakeasy-name-override: list + x-speakeasy-react-hook: + name: RiskCategories + /rpc/risk.overview.get: get: - description: List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates. - operationId: listShadowMCPApprovals + description: Get risk overview metrics and trend data for the current project. + operationId: getRiskOverview parameters: - allowEmptyValue: true - description: The risk policy ID. + description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. in: query - name: policy_id - required: true + name: from schema: - description: The risk policy ID. - format: uuid + description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. + format: date-time + type: string + - allowEmptyValue: true + description: Exclusive end of the overview window. Defaults to now. + in: query + name: to + schema: + description: Exclusive end of the overview window. Defaults to now. + format: date-time type: string - allowEmptyValue: true description: API Key header @@ -17973,7 +19097,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListShadowMCPApprovalsResult' + $ref: '#/components/schemas/RiskOverviewResult' description: OK response. "400": content: @@ -18034,18 +19158,42 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: listShadowMCPApprovals risk + summary: getRiskOverview risk tags: - risk - x-speakeasy-group: risk.approvals - x-speakeasy-name-override: list + x-speakeasy-group: risk.overview + x-speakeasy-name-override: get x-speakeasy-react-hook: - name: RiskListShadowMCPApprovals - /rpc/risk.capabilities.get: + name: RiskOverview + /rpc/risk.overview.rules: get: - description: Get server-side risk analysis capabilities for the current project. - operationId: getRiskCapabilities + description: Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview. + operationId: getRiskRuleBreakdown parameters: + - allowEmptyValue: true + description: Required category key to break down by rule_id (e.g. secrets, pii). + in: query + name: category + required: true + schema: + description: Required category key to break down by rule_id (e.g. secrets, pii). + type: string + - allowEmptyValue: true + description: Inclusive start of the window. Defaults to the same 7-day window as the overview. + in: query + name: from + schema: + description: Inclusive start of the window. Defaults to the same 7-day window as the overview. + format: date-time + type: string + - allowEmptyValue: true + description: Exclusive end of the window. Defaults to now. + in: query + name: to + schema: + description: Exclusive end of the window. Defaults to now. + format: date-time + type: string - allowEmptyValue: true description: API Key header in: header @@ -18072,7 +19220,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskCapabilitiesResult' + $ref: '#/components/schemas/RiskRuleBreakdownResult' description: OK response. "400": content: @@ -18133,32 +19281,40 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: getRiskCapabilities risk + summary: getRiskRuleBreakdown risk tags: - risk - x-speakeasy-group: risk.capabilities - x-speakeasy-name-override: get + x-speakeasy-group: risk.overview + x-speakeasy-name-override: rules x-speakeasy-react-hook: - name: RiskCapabilities - /rpc/risk.overview.get: + name: RiskRuleBreakdown + /rpc/risk.overview.userBreakdown: get: - description: Get risk overview metrics and trend data for the current project. - operationId: getRiskOverview + description: Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview. + operationId: getRiskUserBreakdown parameters: - allowEmptyValue: true - description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. + description: External user identifier to scope the breakdown to. + in: query + name: external_user_id + required: true + schema: + description: External user identifier to scope the breakdown to. + type: string + - allowEmptyValue: true + description: Inclusive start of the window. Defaults to the same 7-day window as the overview. in: query name: from schema: - description: Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to. + description: Inclusive start of the window. Defaults to the same 7-day window as the overview. format: date-time type: string - allowEmptyValue: true - description: Exclusive end of the overview window. Defaults to now. + description: Exclusive end of the window. Defaults to now. in: query name: to schema: - description: Exclusive end of the overview window. Defaults to now. + description: Exclusive end of the window. Defaults to now. format: date-time type: string - allowEmptyValue: true @@ -18187,7 +19343,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskOverviewResult' + $ref: '#/components/schemas/RiskUserBreakdownResult' description: OK response. "400": content: @@ -18248,13 +19404,13 @@ paths: project_slug_header_Gram-Project: [] - project_slug_header_Gram-Project: [] session_header_Gram-Session: [] - summary: getRiskOverview risk + summary: getRiskUserBreakdown risk tags: - risk x-speakeasy-group: risk.overview - x-speakeasy-name-override: get + x-speakeasy-name-override: userBreakdown x-speakeasy-react-hook: - name: RiskOverview + name: RiskUserBreakdown /rpc/risk.policies.create: post: description: Create a new risk analysis policy for the current project. @@ -19113,6 +20269,43 @@ paths: description: Optional chat ID to filter by. format: uuid type: string + - allowEmptyValue: true + description: Optional rule category key to filter by (e.g. secrets, pii, financial). + in: query + name: category + schema: + description: Optional rule category key to filter by (e.g. secrets, pii, financial). + type: string + - allowEmptyValue: true + description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + in: query + name: rule_id + schema: + description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + type: string + - allowEmptyValue: true + description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. + in: query + name: unique_match + schema: + description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. + type: boolean + - allowEmptyValue: true + description: Filter results to messages created at or after this timestamp (ISO 8601). + in: query + name: from + schema: + description: Filter results to messages created at or after this timestamp (ISO 8601). + format: date-time + type: string + - allowEmptyValue: true + description: Filter results to messages created strictly before this timestamp (ISO 8601). + in: query + name: to + schema: + description: Filter results to messages created strictly before this timestamp (ISO 8601). + format: date-time + type: string - allowEmptyValue: true description: Cursor to fetch the next page of results. in: query @@ -26421,14 +27614,16 @@ components: photo_url: type: string description: Avatar URL. - role_id: - type: string - description: Currently assigned role ID. + role_ids: + type: array + items: + type: string + description: All role IDs assigned to this member. required: - id - name - email - - role_id + - role_ids - joined_at AddDeploymentPackageForm: type: object @@ -26633,6 +27828,215 @@ components: - plugin_id - toolset_id - display_name + AdminListOrganizationMembersResult: + type: object + properties: + members: + type: array + items: + $ref: '#/components/schemas/AdminOrganizationMember' + description: The members of the organization. + required: + - members + AdminListOrganizationProjectsResult: + type: object + properties: + projects: + type: array + items: + $ref: '#/components/schemas/AdminProject' + description: The projects belonging to the organization. + required: + - projects + AdminListOrganizationsResult: + type: object + properties: + next_cursor: + type: string + description: Cursor for the next page; empty when exhausted. + organizations: + type: array + items: + $ref: '#/components/schemas/AdminOrganization' + description: The page of organizations. + required: + - organizations + AdminOrganization: + type: object + properties: + account_type: + type: string + description: Gram account type (e.g. free, pro, enterprise). + created_at: + type: string + description: The creation date of the organization. + format: date-time + disabled_at: + type: string + description: The time at which the organization was disabled, if any. + format: date-time + free_trial_ends_at: + type: string + description: The time at which the free trial ends. + format: date-time + free_trial_started_at: + type: string + description: The time at which the free trial started. + format: date-time + id: + type: string + description: The ID of the organization + member_count: + type: integer + description: Number of active members in the organization. + format: int64 + name: + type: string + description: The name of the organization + slug: + type: string + description: The slug of the organization + updated_at: + type: string + description: The last update date of the organization. + format: date-time + whitelisted: + type: boolean + description: Whether the organization is whitelisted for full access. + workos_id: + type: string + description: WorkOS organization ID, if linked. + description: Organization details surfaced to admin operators. + required: + - id + - name + - slug + - account_type + - whitelisted + - member_count + - created_at + - updated_at + AdminOrganizationMember: + type: object + properties: + created_at: + type: string + format: date-time + display_name: + type: string + description: User display name. + email: + type: string + description: User email address. + id: + type: string + description: User ID. + last_login: + type: string + description: The time the user last logged in, if any. + format: date-time + updated_at: + type: string + format: date-time + description: Organization member surfaced to admin operators. + required: + - id + - email + - display_name + - created_at + - updated_at + AdminProject: + type: object + properties: + created_at: + type: string + description: The creation date of the project. + format: date-time + id: + type: string + description: The ID of the project + name: + type: string + description: The name of the project + slug: + type: string + description: The slug of the project + updated_at: + type: string + description: The last update date of the project. + format: date-time + description: Project summary surfaced to admin operators. + required: + - id + - name + - slug + - created_at + - updated_at + AdminProjectDetail: + type: object + properties: + api_key_count: + type: integer + description: Number of active API keys in the project. + format: int64 + assistant_count: + type: integer + description: Number of active assistants in the project. + format: int64 + created_at: + type: string + format: date-time + deployment_count: + type: integer + description: Total number of deployments in the project. + format: int64 + environment_count: + type: integer + description: Number of active environments in the project. + format: int64 + functions_runner_version: + type: string + description: Functions runner version pin, if set. + http_tool_count: + type: integer + description: Number of active HTTP tool definitions in the project. + format: int64 + id: + type: string + description: Project ID. + logo_asset_id: + type: string + description: Project logo asset ID, if set. + name: + type: string + description: Project name. + organization_id: + type: string + description: Owning organization ID. + slug: + type: string + description: Project slug. + toolset_count: + type: integer + description: Number of active toolsets in the project. + format: int64 + updated_at: + type: string + format: date-time + description: Full project detail surfaced to admin operators, including aggregated counts of child resources. + required: + - id + - name + - slug + - organization_id + - toolset_count + - deployment_count + - http_tool_count + - environment_count + - api_key_count + - assistant_count + - created_at + - updated_at AllowedOrigin: type: object properties: @@ -27388,6 +28792,10 @@ components: type: integer description: The number of messages in the chat format: int64 + risk_findings_count: + type: integer + description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. + format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -27489,6 +28897,10 @@ components: type: integer description: The number of messages in the chat format: int64 + risk_findings_count: + type: integer + description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. + format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -27551,6 +28963,10 @@ components: items: $ref: '#/components/schemas/ChatResolution' description: List of resolutions for this chat + risk_findings_count: + type: integer + description: Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere. + format: int64 source: type: string description: 'The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)' @@ -28945,6 +30361,44 @@ components: - created_at - updated_at - is_updating + CustomDomainMcpEndpoint: + type: object + properties: + id: + type: string + description: The ID of the MCP endpoint + format: uuid + mcp_server_id: + type: string + description: The ID of the parent MCP server + format: uuid + mcp_server_name: + type: string + description: The display name of the parent MCP server. May be empty if the parent has no configured name. + mcp_server_slug: + type: string + description: The url-friendly slug of the parent MCP server. May be empty if the parent has no configured slug. + project_id: + type: string + description: The ID of the project the endpoint belongs to + format: uuid + project_name: + type: string + description: The display name of the project the endpoint belongs to + project_slug: + type: string + description: The url-friendly slug of the project the endpoint belongs to + slug: + type: string + description: The endpoint slug + description: An MCP endpoint registered under a custom domain, with its parent MCP server and project denormalised for display in the dashboard's delete-impact preview. + required: + - id + - slug + - project_id + - project_name + - project_slug + - mcp_server_id DeleteGlobalToolVariationForm: type: object properties: @@ -31202,6 +32656,16 @@ components: required: - chats - total + ListCustomDomainMcpEndpointsResult: + type: object + properties: + mcp_endpoints: + type: array + items: + $ref: '#/components/schemas/CustomDomainMcpEndpoint' + description: Result of listing the MCP endpoints registered under an organization's custom domain. + required: + - mcp_endpoints ListDeploymentForm: type: object properties: @@ -33240,13 +34704,6 @@ components: - policy - sort_order - created_at - PokeResponseBody: - type: object - properties: - ok: - type: boolean - required: - - ok Project: type: object properties: @@ -34173,6 +35630,52 @@ components: description: Whether the prompt-injection ML classifier is configured on this server. required: - pi_classifier_enabled + RiskCategoriesResult: + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/RiskCategoryDefinition' + description: Categories in classification-priority order. The last entry is the 'custom' fallback for findings that match none of the others. + description: Canonical risk category definitions used to classify findings, in classification-priority order. Consumers should iterate in order and pick the first match. + required: + - categories + RiskCategoryDefinition: + type: object + properties: + description: + type: string + description: Plain-English description of what this category covers. + icon: + type: string + description: Lucide icon name suggested for this category. + key: + type: string + description: Canonical category key (e.g. 'secrets', 'pii', 'shadow_mcp'). + label: + type: string + description: Human-readable category label for UI rendering. + rule_id_prefix: + type: string + description: When non-empty, findings whose rule_id starts with this prefix belong to this category. The catch-all for a family (e.g. 'pii.'). + rule_ids: + type: array + items: + type: string + description: When non-empty, findings whose rule_id is in this exact list belong to this category. Checked before rule_id_prefix. + source: + type: string + description: When non-empty, findings whose source equals this value belong to this category. + description: One canonical risk category and how findings are classified into it. + required: + - key + - label + - description + - icon + - source + - rule_ids + - rule_id_prefix RiskChatSummary: type: object properties: @@ -34248,6 +35751,11 @@ components: items: $ref: '#/components/schemas/RiskOverviewCategory' description: Top policy categories by finding count. + top_rules: + type: array + items: + $ref: '#/components/schemas/RiskRuleBreakdownEntry' + description: Top rule_ids by finding count. top_users: type: array items: @@ -34262,6 +35770,7 @@ components: - active_policies - top_categories - top_users + - top_rules - time_series_findings RiskOverviewTimeSeriesFinding: type: object @@ -34287,12 +35796,16 @@ components: email: type: string description: User email, or Unknown user when unavailable. + external_user_id: + type: string + description: External user identifier as recorded on chats, when known. Empty when the finding cannot be attributed to an external user. findings: type: integer description: Finding count for this user. format: int64 required: - email + - external_user_id - findings RiskPolicy: type: object @@ -34549,6 +36062,87 @@ components: - created_at - match_redacted - position_known + RiskRuleBreakdownEntry: + type: object + properties: + findings: + type: integer + description: Finding count for this rule within the window. + format: int64 + rule_id: + type: string + description: Rule identifier (e.g. 'secret.aws-access-key'). Empty when the finding has no rule_id (treat as 'unspecified'). + source: + type: string + description: Source bucket the rule belongs to (gitleaks, presidio, etc.) for label/icon resolution on the dashboard. + required: + - rule_id + - source + - findings + RiskRuleBreakdownResult: + type: object + properties: + category: + type: string + description: Category the breakdown is scoped to. + from: + type: string + description: Inclusive start of the window used. + format: date-time + rules: + type: array + items: + $ref: '#/components/schemas/RiskRuleBreakdownEntry' + description: Rules in this category, ordered by finding count descending. + to: + type: string + description: Exclusive end of the window used. + format: date-time + total: + type: integer + description: Total findings across all rules in this category and window. + format: int64 + required: + - from + - to + - category + - rules + - total + RiskUserBreakdownResult: + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/RiskOverviewCategory' + description: Category breakdown for this user, ordered by finding count descending. + external_user_id: + type: string + description: External user the breakdown is scoped to. + findings: + type: integer + description: Total findings for this user in the window. + format: int64 + from: + type: string + description: Inclusive start of the window used. + format: date-time + rules: + type: array + items: + $ref: '#/components/schemas/RiskRuleBreakdownEntry' + description: Rule_id breakdown for this user, ordered by finding count descending. + to: + type: string + description: Exclusive end of the window used. + format: date-time + required: + - from + - to + - external_user_id + - findings + - categories + - rules Role: type: object properties: @@ -36735,18 +38329,20 @@ components: required: - id - visibility - UpdateMemberRoleForm: + UpdateMemberRolesForm: type: object properties: - role_id: - type: string - description: The new role ID to assign. + role_ids: + type: array + items: + type: string + description: The role IDs to assign. Replaces all existing role assignments. user_id: type: string description: The user ID to update. required: - user_id - - role_id + - role_ids UpdateOAuthProxyServerForm: type: object properties: @@ -36769,6 +38365,20 @@ components: $ref: '#/components/schemas/OAuthProxyServerUpdateForm' required: - oauth_proxy_server + UpdateOrganizationRequestBody: + type: object + properties: + account_type: + type: string + description: New gram_account_type (e.g. free, pro, enterprise). + id: + type: string + description: Organization ID. + whitelisted: + type: boolean + description: New whitelisted flag. + required: + - id UpdatePackageForm: type: object properties: @@ -37867,6 +39477,11 @@ components: - verified - message securitySchemes: + admin_auth_header_Authorization: + type: apiKey + description: Admin session auth for admin endpoints. Cookie-only credential; session is validated against Google on every request. + name: Authorization + in: header apikey_header_Authorization: type: apiKey description: key based auth. @@ -37899,7 +39514,7 @@ tags: - name: access description: Manage roles, team member access control, and authorization challenge events. - name: admin - description: Operational endpoints for administrative tasks. + description: Operations supporting admin tasks, protected by Google workspace auth. - name: assets description: Manages assets used by Gram projects. - name: assistantMemories diff --git a/server/gen/risk/client.go b/server/gen/risk/client.go index a67dd058a9..0573e8470b 100644 --- a/server/gen/risk/client.go +++ b/server/gen/risk/client.go @@ -26,6 +26,9 @@ type Client struct { ListRiskResultsForAgentEndpoint goa.Endpoint ListRiskResultsByChatEndpoint goa.Endpoint GetRiskOverviewEndpoint goa.Endpoint + ListRiskCategoriesEndpoint goa.Endpoint + GetRiskUserBreakdownEndpoint goa.Endpoint + GetRiskRuleBreakdownEndpoint goa.Endpoint GetRiskPolicyStatusEndpoint goa.Endpoint ListShadowMCPApprovalsEndpoint goa.Endpoint ApproveShadowMCPEndpoint goa.Endpoint @@ -34,7 +37,7 @@ type Client struct { } // NewClient initializes a "risk" service client given the endpoints. -func NewClient(createRiskPolicy, listRiskPolicies, getRiskCapabilities, getRiskPolicy, updateRiskPolicy, deleteRiskPolicy, listRiskResults, listRiskResultsForAgent, listRiskResultsByChat, getRiskOverview, getRiskPolicyStatus, listShadowMCPApprovals, approveShadowMCP, revokeShadowMCPApproval, triggerRiskAnalysis goa.Endpoint) *Client { +func NewClient(createRiskPolicy, listRiskPolicies, getRiskCapabilities, getRiskPolicy, updateRiskPolicy, deleteRiskPolicy, listRiskResults, listRiskResultsForAgent, listRiskResultsByChat, getRiskOverview, listRiskCategories, getRiskUserBreakdown, getRiskRuleBreakdown, getRiskPolicyStatus, listShadowMCPApprovals, approveShadowMCP, revokeShadowMCPApproval, triggerRiskAnalysis goa.Endpoint) *Client { return &Client{ CreateRiskPolicyEndpoint: createRiskPolicy, ListRiskPoliciesEndpoint: listRiskPolicies, @@ -46,6 +49,9 @@ func NewClient(createRiskPolicy, listRiskPolicies, getRiskCapabilities, getRiskP ListRiskResultsForAgentEndpoint: listRiskResultsForAgent, ListRiskResultsByChatEndpoint: listRiskResultsByChat, GetRiskOverviewEndpoint: getRiskOverview, + ListRiskCategoriesEndpoint: listRiskCategories, + GetRiskUserBreakdownEndpoint: getRiskUserBreakdown, + GetRiskRuleBreakdownEndpoint: getRiskRuleBreakdown, GetRiskPolicyStatusEndpoint: getRiskPolicyStatus, ListShadowMCPApprovalsEndpoint: listShadowMCPApprovals, ApproveShadowMCPEndpoint: approveShadowMCP, @@ -273,6 +279,75 @@ func (c *Client) GetRiskOverview(ctx context.Context, p *GetRiskOverviewPayload) return ires.(*RiskOverviewResult), nil } +// ListRiskCategories calls the "listRiskCategories" endpoint of the "risk" +// service. +// ListRiskCategories may return the following errors: +// - "unauthorized" (type *goa.ServiceError): unauthorized access +// - "forbidden" (type *goa.ServiceError): permission denied +// - "bad_request" (type *goa.ServiceError): request is invalid +// - "not_found" (type *goa.ServiceError): resource not found +// - "conflict" (type *goa.ServiceError): resource already exists +// - "unsupported_media" (type *goa.ServiceError): unsupported media type +// - "invalid" (type *goa.ServiceError): request contains one or more invalidation fields +// - "invariant_violation" (type *goa.ServiceError): an unexpected error occurred +// - "unexpected" (type *goa.ServiceError): an unexpected error occurred +// - "gateway_error" (type *goa.ServiceError): an unexpected error occurred +// - error: internal error +func (c *Client) ListRiskCategories(ctx context.Context, p *ListRiskCategoriesPayload) (res *RiskCategoriesResult, err error) { + var ires any + ires, err = c.ListRiskCategoriesEndpoint(ctx, p) + if err != nil { + return + } + return ires.(*RiskCategoriesResult), nil +} + +// GetRiskUserBreakdown calls the "getRiskUserBreakdown" endpoint of the "risk" +// service. +// GetRiskUserBreakdown may return the following errors: +// - "unauthorized" (type *goa.ServiceError): unauthorized access +// - "forbidden" (type *goa.ServiceError): permission denied +// - "bad_request" (type *goa.ServiceError): request is invalid +// - "not_found" (type *goa.ServiceError): resource not found +// - "conflict" (type *goa.ServiceError): resource already exists +// - "unsupported_media" (type *goa.ServiceError): unsupported media type +// - "invalid" (type *goa.ServiceError): request contains one or more invalidation fields +// - "invariant_violation" (type *goa.ServiceError): an unexpected error occurred +// - "unexpected" (type *goa.ServiceError): an unexpected error occurred +// - "gateway_error" (type *goa.ServiceError): an unexpected error occurred +// - error: internal error +func (c *Client) GetRiskUserBreakdown(ctx context.Context, p *GetRiskUserBreakdownPayload) (res *RiskUserBreakdownResult, err error) { + var ires any + ires, err = c.GetRiskUserBreakdownEndpoint(ctx, p) + if err != nil { + return + } + return ires.(*RiskUserBreakdownResult), nil +} + +// GetRiskRuleBreakdown calls the "getRiskRuleBreakdown" endpoint of the "risk" +// service. +// GetRiskRuleBreakdown may return the following errors: +// - "unauthorized" (type *goa.ServiceError): unauthorized access +// - "forbidden" (type *goa.ServiceError): permission denied +// - "bad_request" (type *goa.ServiceError): request is invalid +// - "not_found" (type *goa.ServiceError): resource not found +// - "conflict" (type *goa.ServiceError): resource already exists +// - "unsupported_media" (type *goa.ServiceError): unsupported media type +// - "invalid" (type *goa.ServiceError): request contains one or more invalidation fields +// - "invariant_violation" (type *goa.ServiceError): an unexpected error occurred +// - "unexpected" (type *goa.ServiceError): an unexpected error occurred +// - "gateway_error" (type *goa.ServiceError): an unexpected error occurred +// - error: internal error +func (c *Client) GetRiskRuleBreakdown(ctx context.Context, p *GetRiskRuleBreakdownPayload) (res *RiskRuleBreakdownResult, err error) { + var ires any + ires, err = c.GetRiskRuleBreakdownEndpoint(ctx, p) + if err != nil { + return + } + return ires.(*RiskRuleBreakdownResult), nil +} + // GetRiskPolicyStatus calls the "getRiskPolicyStatus" endpoint of the "risk" // service. // GetRiskPolicyStatus may return the following errors: diff --git a/server/gen/risk/service.go b/server/gen/risk/service.go index 671d0a9f3c..45e7b11df5 100644 --- a/server/gen/risk/service.go +++ b/server/gen/risk/service.go @@ -43,6 +43,17 @@ type Service interface { ListRiskResultsByChat(context.Context, *ListRiskResultsByChatPayload) (res *ListRiskResultsByChatResult, err error) // Get risk overview metrics and trend data for the current project. GetRiskOverview(context.Context, *GetRiskOverviewPayload) (res *RiskOverviewResult, err error) + // Return the canonical risk category definitions: metadata + // (label/description/icon) plus the classification (source / rule_id list / + // rule_id prefix) used to bucket findings. Dashboards and CLIs should call + // this instead of maintaining their own copy of the mapping. + ListRiskCategories(context.Context, *ListRiskCategoriesPayload) (res *RiskCategoriesResult, err error) + // Per-user breakdowns of findings by category and by rule_id within a time + // window. Powers the user drill-down on /risk-overview. + GetRiskUserBreakdown(context.Context, *GetRiskUserBreakdownPayload) (res *RiskUserBreakdownResult, err error) + // Get per-rule_id finding counts for a category within a time window. Powers + // the per-category drill-down chart on /risk-overview. + GetRiskRuleBreakdown(context.Context, *GetRiskRuleBreakdownPayload) (res *RiskRuleBreakdownResult, err error) // Get the analysis status of a risk policy including progress and workflow // state. GetRiskPolicyStatus(context.Context, *GetRiskPolicyStatusPayload) (res *types.RiskPolicyStatus, err error) @@ -82,7 +93,7 @@ const ServiceName = "risk" // MethodNames lists the service method names as defined in the design. These // are the same values that are set in the endpoint request contexts under the // MethodKey key. -var MethodNames = [15]string{"createRiskPolicy", "listRiskPolicies", "getRiskCapabilities", "getRiskPolicy", "updateRiskPolicy", "deleteRiskPolicy", "listRiskResults", "listRiskResultsForAgent", "listRiskResultsByChat", "getRiskOverview", "getRiskPolicyStatus", "listShadowMCPApprovals", "approveShadowMCP", "revokeShadowMCPApproval", "triggerRiskAnalysis"} +var MethodNames = [18]string{"createRiskPolicy", "listRiskPolicies", "getRiskCapabilities", "getRiskPolicy", "updateRiskPolicy", "deleteRiskPolicy", "listRiskResults", "listRiskResultsForAgent", "listRiskResultsByChat", "getRiskOverview", "listRiskCategories", "getRiskUserBreakdown", "getRiskRuleBreakdown", "getRiskPolicyStatus", "listShadowMCPApprovals", "approveShadowMCP", "revokeShadowMCPApproval", "triggerRiskAnalysis"} // ApproveShadowMCPPayload is the payload type of the risk service // approveShadowMCP method. @@ -175,6 +186,44 @@ type GetRiskPolicyStatusPayload struct { ID string } +// GetRiskRuleBreakdownPayload is the payload type of the risk service +// getRiskRuleBreakdown method. +type GetRiskRuleBreakdownPayload struct { + ApikeyToken *string + SessionToken *string + ProjectSlugInput *string + // Required category key to break down by rule_id (e.g. secrets, pii). + Category string + // Inclusive start of the window. Defaults to the same 7-day window as the + // overview. + From *string + // Exclusive end of the window. Defaults to now. + To *string +} + +// GetRiskUserBreakdownPayload is the payload type of the risk service +// getRiskUserBreakdown method. +type GetRiskUserBreakdownPayload struct { + ApikeyToken *string + SessionToken *string + ProjectSlugInput *string + // External user identifier to scope the breakdown to. + ExternalUserID string + // Inclusive start of the window. Defaults to the same 7-day window as the + // overview. + From *string + // Exclusive end of the window. Defaults to now. + To *string +} + +// ListRiskCategoriesPayload is the payload type of the risk service +// listRiskCategories method. +type ListRiskCategoriesPayload struct { + ApikeyToken *string + SessionToken *string + ProjectSlugInput *string +} + // ListRiskPoliciesPayload is the payload type of the risk service // listRiskPolicies method. type ListRiskPoliciesPayload struct { @@ -248,6 +297,19 @@ type ListRiskResultsPayload struct { PolicyID *string // Optional chat ID to filter by. ChatID *string + // Optional rule category key to filter by (e.g. secrets, pii, financial). + Category *string + // Optional rule identifier substring to filter by (case-insensitive, e.g. + // 'secret' matches all 'secret.*' rules). + RuleID *string + // If true, collapse results to one row per (policy_id, rule_id, match), + // keeping the most recent occurrence. Useful when the same secret is detected + // many times within a single message body. + UniqueMatch *bool + // Filter results to messages created at or after this timestamp (ISO 8601). + From *string + // Filter results to messages created strictly before this timestamp (ISO 8601). + To *string // Cursor to fetch the next page of results. Cursor *string // Maximum number of results to return per page. @@ -301,6 +363,35 @@ type RiskCapabilitiesResult struct { PiClassifierEnabled bool } +// RiskCategoriesResult is the result type of the risk service +// listRiskCategories method. +type RiskCategoriesResult struct { + // Categories in classification-priority order. The last entry is the 'custom' + // fallback for findings that match none of the others. + Categories []*RiskCategoryDefinition +} + +// One canonical risk category and how findings are classified into it. +type RiskCategoryDefinition struct { + // Canonical category key (e.g. 'secrets', 'pii', 'shadow_mcp'). + Key string + // Human-readable category label for UI rendering. + Label string + // Plain-English description of what this category covers. + Description string + // Lucide icon name suggested for this category. + Icon string + // When non-empty, findings whose source equals this value belong to this + // category. + Source string + // When non-empty, findings whose rule_id is in this exact list belong to this + // category. Checked before rule_id_prefix. + RuleIds []string + // When non-empty, findings whose rule_id starts with this prefix belong to + // this category. The catch-all for a family (e.g. 'pii.'). + RuleIDPrefix string +} + type RiskOverviewCategory struct { // Policy category key. Category string @@ -327,6 +418,8 @@ type RiskOverviewResult struct { TopCategories []*RiskOverviewCategory // Top users by finding count. TopUsers []*RiskOverviewUser + // Top rule_ids by finding count. + TopRules []*RiskRuleBreakdownEntry // Time-series finding counts by category in the window. TimeSeriesFindings []*RiskOverviewTimeSeriesFinding } @@ -343,10 +436,56 @@ type RiskOverviewTimeSeriesFinding struct { type RiskOverviewUser struct { // User email, or Unknown user when unavailable. Email string + // External user identifier as recorded on chats, when known. Empty when the + // finding cannot be attributed to an external user. + ExternalUserID string // Finding count for this user. Findings int64 } +type RiskRuleBreakdownEntry struct { + // Rule identifier (e.g. 'secret.aws-access-key'). Empty when the finding has + // no rule_id (treat as 'unspecified'). + RuleID string + // Source bucket the rule belongs to (gitleaks, presidio, etc.) for label/icon + // resolution on the dashboard. + Source string + // Finding count for this rule within the window. + Findings int64 +} + +// RiskRuleBreakdownResult is the result type of the risk service +// getRiskRuleBreakdown method. +type RiskRuleBreakdownResult struct { + // Inclusive start of the window used. + From string + // Exclusive end of the window used. + To string + // Category the breakdown is scoped to. + Category string + // Rules in this category, ordered by finding count descending. + Rules []*RiskRuleBreakdownEntry + // Total findings across all rules in this category and window. + Total int64 +} + +// RiskUserBreakdownResult is the result type of the risk service +// getRiskUserBreakdown method. +type RiskUserBreakdownResult struct { + // Inclusive start of the window used. + From string + // Exclusive end of the window used. + To string + // External user the breakdown is scoped to. + ExternalUserID string + // Total findings for this user in the window. + Findings int64 + // Category breakdown for this user, ordered by finding count descending. + Categories []*RiskOverviewCategory + // Rule_id breakdown for this user, ordered by finding count descending. + Rules []*RiskRuleBreakdownEntry +} + // TriggerRiskAnalysisPayload is the payload type of the risk service // triggerRiskAnalysis method. type TriggerRiskAnalysisPayload struct { From 1db190e21bd662162bca52c728f3b46a91314dcc Mon Sep 17 00:00:00 2001 From: Sagar Batchu Date: Fri, 22 May 2026 06:33:12 -0700 Subject: [PATCH 7/8] feat(risk): per-org salt on match-fingerprint hash Mixes the active organization ID into sha256(match) with a NUL byte separator so the redacted fingerprint can never correlate the same secret across organizations. Within an org the fingerprint stays deterministic so agents can still dedupe findings of the same secret across chats. Defense in depth: the endpoint is already gated by org:admin and the auth context is project-scoped, so cross-org reads aren't possible today. The salt removes the dependency on access-control correctness for the cross-org non-correlation property. Adds white-box tests for the helper (cross-org differs, same-org deterministic, shadow_mcp ignores salt, empty collapses, NUL separator prevents boundary ambiguity). The integration test environment hard- codes mockidp.MockOrgID across instances so the cross-org assertion has to live at the unit-test layer. Co-Authored-By: Claude Opus 4.7 (1M context) --- server/internal/risk/impl.go | 30 ++++++-- server/internal/risk/redact_internal_test.go | 74 ++++++++++++++++++++ server/internal/risk/results_test.go | 4 +- 3 files changed, 101 insertions(+), 7 deletions(-) create mode 100644 server/internal/risk/redact_internal_test.go diff --git a/server/internal/risk/impl.go b/server/internal/risk/impl.go index 7df1f9119f..26b6043ef7 100644 --- a/server/internal/risk/impl.go +++ b/server/internal/risk/impl.go @@ -732,9 +732,16 @@ func (s *Service) ListRiskResultsForAgent(ctx context.Context, payload *gen.List return nil, err } + // ListRiskResults already enforced auth above; this lookup is safe and + // only used to derive the per-org salt for match-fingerprint hashing. + authCtx, ok := contextvalues.GetAuthContext(ctx) + if !ok || authCtx == nil { + return nil, oops.C(oops.CodeUnauthorized) + } + redacted := make([]*types.RiskResultRedacted, 0, len(base.Results)) for _, r := range base.Results { - redacted = append(redacted, redactRiskResult(r)) + redacted = append(redacted, redactRiskResult(r, authCtx.ActiveOrganizationID)) } return &gen.ListRiskResultsForAgentResult{ @@ -750,8 +757,12 @@ func (s *Service) ListRiskResultsForAgent(ctx context.Context, payload *gen.List // "shadow_mcp" is a deliberate carve-out: its match is a server URL or // command identifier (already shown unmasked in the dashboard) and the agent // needs to be able to name it to be useful. -func redactRiskResult(r *types.RiskResult) *types.RiskResultRedacted { - matchRedacted := redactMatch(r.Source, r.Match) +// +// orgID is mixed into the hash so fingerprints cannot correlate the same +// secret across organizations even if some future code path widens the +// surface beyond org-scoped access. +func redactRiskResult(r *types.RiskResult, orgID string) *types.RiskResultRedacted { + matchRedacted := redactMatch(r.Source, r.Match, orgID) return &types.RiskResultRedacted{ ID: r.ID, @@ -776,14 +787,23 @@ func redactRiskResult(r *types.RiskResult) *types.RiskResultRedacted { // non-shadow_mcp sources, or passes it through verbatim for shadow_mcp. // A nil/empty match collapses to `` without a sha component // so the absence of a finding payload is distinguishable from a real hash. -func redactMatch(source string, match *string) string { +// +// The hash is salted by orgID with a NUL separator so two different orgs +// holding the same secret produce different fingerprints — defense in depth +// against any future surface that crosses an org boundary. Within an org the +// fingerprint stays deterministic so agents can still dedupe. +func redactMatch(source string, match *string, orgID string) string { if match == nil || *match == "" { return "" } if source == shadowmcp.SourceShadowMCP { return *match } - sum := sha256.Sum256([]byte(*match)) + var buf []byte + buf = append(buf, orgID...) + buf = append(buf, 0x00) + buf = append(buf, *match...) + sum := sha256.Sum256(buf) return fmt.Sprintf("", len(*match), hex.EncodeToString(sum[:4])) } diff --git a/server/internal/risk/redact_internal_test.go b/server/internal/risk/redact_internal_test.go new file mode 100644 index 0000000000..63793aabc4 --- /dev/null +++ b/server/internal/risk/redact_internal_test.go @@ -0,0 +1,74 @@ +package risk + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +// White-box tests for the per-org-salted redaction helper. The integration +// tests in results_test.go can't express cross-org assertions because +// testenv.InitAuthContext pins every test instance to mockidp.MockOrgID, so +// we exercise the pure function directly here. + +func TestRedactMatch_FingerprintDiffersAcrossOrgs(t *testing.T) { + t.Parallel() + + secret := "sk-shared-across-orgs-7777" + + fpOrgA := redactMatch("gitleaks", &secret, "org-aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa") + fpOrgB := redactMatch("gitleaks", &secret, "org-bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb") + + require.NotEqual(t, fpOrgA, fpOrgB, + "same secret in two different orgs must produce different fingerprints (org-salted sha256)") + require.Regexp(t, `^$`, fpOrgA) + require.Regexp(t, `^$`, fpOrgB) +} + +func TestRedactMatch_FingerprintDeterministicWithinOrg(t *testing.T) { + t.Parallel() + + secret := "sk-abc123def456" + orgID := "org-cccccccc-cccc-cccc-cccc-cccccccccccc" + + fp1 := redactMatch("gitleaks", &secret, orgID) + fp2 := redactMatch("gitleaks", &secret, orgID) + + require.Equal(t, fp1, fp2, + "same secret in same org must produce identical fingerprints so agents can dedupe") +} + +func TestRedactMatch_ShadowMCPIgnoresSalt(t *testing.T) { + t.Parallel() + + const serverID = "mcp__evil-server__" + match := serverID + + got := redactMatch("shadow_mcp", &match, "any-org-id") + + require.Equal(t, serverID, got, + "shadow_mcp match should pass through verbatim regardless of orgID") +} + +func TestRedactMatch_EmptyMatchCollapses(t *testing.T) { + t.Parallel() + + empty := "" + require.Equal(t, "", redactMatch("gitleaks", nil, "org-x")) + require.Equal(t, "", redactMatch("gitleaks", &empty, "org-x")) +} + +// Guards against an "org_id || match" concatenation bug where an attacker +// could shift bytes between salt and payload. With a NUL separator, +// (orgID="ab", match="cd") and (orgID="a", match="bcd") must produce +// different fingerprints even though their concatenation is identical. +func TestRedactMatch_NULSeparatorPreventsBoundaryAmbiguity(t *testing.T) { + t.Parallel() + + left, right := "bcd", "cd" + fpA := redactMatch("gitleaks", &left, "a") + fpB := redactMatch("gitleaks", &right, "ab") + + require.NotEqual(t, fpA, fpB, + "shifting bytes from match into orgID must change the fingerprint (NUL separator boundary)") +} diff --git a/server/internal/risk/results_test.go b/server/internal/risk/results_test.go index 5e140dc500..abef128199 100644 --- a/server/internal/risk/results_test.go +++ b/server/internal/risk/results_test.go @@ -367,7 +367,7 @@ func TestListRiskResultsForAgent_ShadowMCPPassthrough(t *testing.T) { require.Equal(t, shadowMatch, result.Results[0].MatchRedacted, "shadow_mcp match should pass through verbatim") } -func TestListRiskResultsForAgent_DeterministicFingerprint(t *testing.T) { +func TestListRiskResultsForAgent_DeterministicFingerprintWithinOrg(t *testing.T) { t.Parallel() ctx, ti := newTestRiskService(t) @@ -392,7 +392,7 @@ func TestListRiskResultsForAgent_DeterministicFingerprint(t *testing.T) { require.NoError(t, err) require.Len(t, result.Results, 2) require.Equal(t, result.Results[0].MatchRedacted, result.Results[1].MatchRedacted, - "identical secrets must produce identical fingerprints so the agent can dedupe") + "identical secrets within the same org must produce identical fingerprints so the agent can dedupe") } func TestListRiskResultsForAgent_Unauthorized(t *testing.T) { From a0194d2f0a59259365b9eb5c1c6c3d6c8ee68cea Mon Sep 17 00:00:00 2001 From: Sagar Batchu Date: Fri, 22 May 2026 07:25:52 -0700 Subject: [PATCH 8/8] fix(risk): mirror new filter fields on listRiskResultsForAgent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit main's risk-overview-analytics PR added category, rule_id, unique_match, from, and to filter fields to listRiskResults. The agent endpoint constructs a ListRiskResultsPayload literal directly, so exhaustruct rightly flagged the new fields as missing. Add them to the agent endpoint's payload too (the LLM benefits from the same filters — and from/to in particular lets the agent honor the dashboard's selected date range) and thread them through. Also reverts mise.lock to main's version; the only diff was the autogenerated doc-URL header (mise.jdx.dev vs mise.en.dev) from a locally-stale mise install, which CI rebuilds clean and was failing git:porcelain. Co-Authored-By: Claude Opus 4.7 (1M context) --- .speakeasy/out.openapi.yaml | 37 ++++++++++++++ client/sdk/.speakeasy/gen.lock | 12 ++--- .../sdk/src/funcs/riskResultsListForAgent.ts | 5 ++ .../operations/listriskresultsforagent.ts | 32 ++++++++++++ .../riskListResultsForAgent.core.ts | 10 ++++ .../react-query/riskListResultsForAgent.ts | 10 ++++ mise.lock | 2 +- server/design/risk/design.go | 14 ++++++ server/gen/http/cli/gram/cli.go | 19 ++++++- server/gen/http/openapi3.json | 2 +- server/gen/http/openapi3.yaml | 37 ++++++++++++++ server/gen/http/risk/client/cli.go | 50 ++++++++++++++++++- server/gen/http/risk/client/encode_decode.go | 15 ++++++ server/gen/http/risk/server/encode_decode.go | 39 ++++++++++++++- server/gen/http/risk/server/types.go | 7 ++- server/gen/risk/service.go | 13 +++++ server/internal/risk/impl.go | 5 ++ 17 files changed, 296 insertions(+), 13 deletions(-) diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index 36e9cd22dc..0d0fff34e4 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -19871,6 +19871,43 @@ paths: description: Optional chat ID to filter by. format: uuid type: string + - allowEmptyValue: true + description: Optional rule category key to filter by (e.g. secrets, pii, financial). + in: query + name: category + schema: + description: Optional rule category key to filter by (e.g. secrets, pii, financial). + type: string + - allowEmptyValue: true + description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + in: query + name: rule_id + schema: + description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + type: string + - allowEmptyValue: true + description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. + in: query + name: unique_match + schema: + description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. + type: boolean + - allowEmptyValue: true + description: Filter results to messages created at or after this timestamp (ISO 8601). + in: query + name: from + schema: + description: Filter results to messages created at or after this timestamp (ISO 8601). + format: date-time + type: string + - allowEmptyValue: true + description: Filter results to messages created strictly before this timestamp (ISO 8601). + in: query + name: to + schema: + description: Filter results to messages created strictly before this timestamp (ISO 8601). + format: date-time + type: string - allowEmptyValue: true description: Cursor to fetch the next page of results. in: query diff --git a/client/sdk/.speakeasy/gen.lock b/client/sdk/.speakeasy/gen.lock index 216744e72b..9158eac3ac 100644 --- a/client/sdk/.speakeasy/gen.lock +++ b/client/sdk/.speakeasy/gen.lock @@ -1,7 +1,7 @@ lockVersion: 2.0.0 id: 0e7a6274-2092-40cd-9586-9415c6655c64 management: - docChecksum: e8d7384e3065c483e35e9e4019e3b821 + docChecksum: cb1aeee39e30569296044d929a9ea5a9 docVersion: 0.0.1 speakeasyVersion: 1.761.5 generationVersion: 2.879.13 @@ -2097,7 +2097,7 @@ trackedFiles: docs/models/operations/listriskresultsbychatsecurityoption2.md: last_write_checksum: sha1:e4671f7de0aa651f138730fc56273cf87c2eca30 docs/models/operations/listriskresultsforagentrequest.md: - last_write_checksum: sha1:03d33dea2996170ac4230f24e766278cbf4c1c55 + last_write_checksum: sha1:fcdd1b56e5a3e73a90784593db99527b6fe5bc66 docs/models/operations/listriskresultsforagentsecurity.md: last_write_checksum: sha1:55857ae3d042ea9b728454789fcaf3a08c7a274b docs/models/operations/listriskresultsforagentsecurityoption1.md: @@ -3387,7 +3387,7 @@ trackedFiles: src/funcs/riskResultsList.ts: last_write_checksum: sha1:916d0c362f42196c6b9c6df262275743384317db src/funcs/riskResultsListForAgent.ts: - last_write_checksum: sha1:9724df484a7e93e1c4adb50f0bd3d41c2b93a940 + last_write_checksum: sha1:e917d47c44fd53547d37c74eebc9147ca9660fcd src/funcs/slackConfigureSlackApp.ts: last_write_checksum: sha1:8bc4423e8eee9029d10416d94f39ce19518eeeba src/funcs/slackCreateSlackApp.ts: @@ -5253,7 +5253,7 @@ trackedFiles: src/models/operations/listriskresultsbychat.ts: last_write_checksum: sha1:e9e67cfb8e43e5a443a937d067267d2df381ab4e src/models/operations/listriskresultsforagent.ts: - last_write_checksum: sha1:374aa092eadba413de4fd1d7696f2c3c634e53eb + last_write_checksum: sha1:13f782f1a2fb9e4368b484cccbc53f09fece107a src/models/operations/listroles.ts: last_write_checksum: sha1:fbc4e5b077897e28a45f72084c64191615d4d5dd src/models/operations/listscopes.ts: @@ -6303,9 +6303,9 @@ trackedFiles: src/react-query/riskListResultsByChat.ts: last_write_checksum: sha1:47dced4daf98fbce57c9d493f3b6d51676fb033f src/react-query/riskListResultsForAgent.core.ts: - last_write_checksum: sha1:3e2bf05f11b6f90d0b2bc121e0a283355333f21f + last_write_checksum: sha1:74c479d67e75031ca4a8c285dfe304ff9619af4c src/react-query/riskListResultsForAgent.ts: - last_write_checksum: sha1:5f2338b971b5f2060824b2be63213fc5f5aec448 + last_write_checksum: sha1:7ac5d58777897d595f1746ee39e3551c9e4e8735 src/react-query/riskListShadowMCPApprovals.core.ts: last_write_checksum: sha1:6eb945acdc2cf91199aadf0272c87e8e2857741d src/react-query/riskListShadowMCPApprovals.ts: diff --git a/client/sdk/src/funcs/riskResultsListForAgent.ts b/client/sdk/src/funcs/riskResultsListForAgent.ts index 68dd6030d1..d5142e9734 100644 --- a/client/sdk/src/funcs/riskResultsListForAgent.ts +++ b/client/sdk/src/funcs/riskResultsListForAgent.ts @@ -100,10 +100,15 @@ async function $do( const path = pathToFunc("/rpc/risk.results.listForAgent")(); const query = encodeFormQuery({ + "category": payload?.category, "chat_id": payload?.chat_id, "cursor": payload?.cursor, + "from": payload?.from, "limit": payload?.limit, "policy_id": payload?.policy_id, + "rule_id": payload?.rule_id, + "to": payload?.to, + "unique_match": payload?.unique_match, }); const headers = new Headers(compactMap({ diff --git a/client/sdk/src/models/operations/listriskresultsforagent.ts b/client/sdk/src/models/operations/listriskresultsforagent.ts index e58169a770..246b71543a 100644 --- a/client/sdk/src/models/operations/listriskresultsforagent.ts +++ b/client/sdk/src/models/operations/listriskresultsforagent.ts @@ -29,6 +29,26 @@ export type ListRiskResultsForAgentRequest = { * Optional chat ID to filter by. */ chatId?: string | undefined; + /** + * Optional rule category key to filter by (e.g. secrets, pii, financial). + */ + category?: string | undefined; + /** + * Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + */ + ruleId?: string | undefined; + /** + * If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. + */ + uniqueMatch?: boolean | undefined; + /** + * Filter results to messages created at or after this timestamp (ISO 8601). + */ + from?: Date | undefined; + /** + * Filter results to messages created strictly before this timestamp (ISO 8601). + */ + to?: Date | undefined; /** * Cursor to fetch the next page of results. */ @@ -162,6 +182,11 @@ export function listRiskResultsForAgentSecurityToJSON( export type ListRiskResultsForAgentRequest$Outbound = { policy_id?: string | undefined; chat_id?: string | undefined; + category?: string | undefined; + rule_id?: string | undefined; + unique_match?: boolean | undefined; + from?: string | undefined; + to?: string | undefined; cursor?: string | undefined; limit?: number | undefined; "Gram-Key"?: string | undefined; @@ -177,6 +202,11 @@ export const ListRiskResultsForAgentRequest$outboundSchema: z.ZodMiniType< z.object({ policyId: z.optional(z.string()), chatId: z.optional(z.string()), + category: z.optional(z.string()), + ruleId: z.optional(z.string()), + uniqueMatch: z.optional(z.boolean()), + from: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), + to: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), cursor: z.optional(z.string()), limit: z.optional(z.int()), gramKey: z.optional(z.string()), @@ -187,6 +217,8 @@ export const ListRiskResultsForAgentRequest$outboundSchema: z.ZodMiniType< return remap$(v, { policyId: "policy_id", chatId: "chat_id", + ruleId: "rule_id", + uniqueMatch: "unique_match", gramKey: "Gram-Key", gramSession: "Gram-Session", gramProject: "Gram-Project", diff --git a/client/sdk/src/react-query/riskListResultsForAgent.core.ts b/client/sdk/src/react-query/riskListResultsForAgent.core.ts index 3038d11734..fd8b1fd690 100644 --- a/client/sdk/src/react-query/riskListResultsForAgent.core.ts +++ b/client/sdk/src/react-query/riskListResultsForAgent.core.ts @@ -49,6 +49,11 @@ export function buildRiskListResultsForAgentQuery( queryKey: queryKeyRiskListResultsForAgent({ policyId: request?.policyId, chatId: request?.chatId, + category: request?.category, + ruleId: request?.ruleId, + uniqueMatch: request?.uniqueMatch, + from: request?.from, + to: request?.to, cursor: request?.cursor, limit: request?.limit, gramKey: request?.gramKey, @@ -83,6 +88,11 @@ export function queryKeyRiskListResultsForAgent( parameters: { policyId?: string | undefined; chatId?: string | undefined; + category?: string | undefined; + ruleId?: string | undefined; + uniqueMatch?: boolean | undefined; + from?: Date | undefined; + to?: Date | undefined; cursor?: string | undefined; limit?: number | undefined; gramKey?: string | undefined; diff --git a/client/sdk/src/react-query/riskListResultsForAgent.ts b/client/sdk/src/react-query/riskListResultsForAgent.ts index 3527581c80..6b613fc738 100644 --- a/client/sdk/src/react-query/riskListResultsForAgent.ts +++ b/client/sdk/src/react-query/riskListResultsForAgent.ts @@ -116,6 +116,11 @@ export function setRiskListResultsForAgentData( parameters: { policyId?: string | undefined; chatId?: string | undefined; + category?: string | undefined; + ruleId?: string | undefined; + uniqueMatch?: boolean | undefined; + from?: Date | undefined; + to?: Date | undefined; cursor?: string | undefined; limit?: number | undefined; gramKey?: string | undefined; @@ -136,6 +141,11 @@ export function invalidateRiskListResultsForAgent( [parameters: { policyId?: string | undefined; chatId?: string | undefined; + category?: string | undefined; + ruleId?: string | undefined; + uniqueMatch?: boolean | undefined; + from?: Date | undefined; + to?: Date | undefined; cursor?: string | undefined; limit?: number | undefined; gramKey?: string | undefined; diff --git a/mise.lock b/mise.lock index 02b41aeff6..f43efe477a 100644 --- a/mise.lock +++ b/mise.lock @@ -1,4 +1,4 @@ -# @generated - this file is auto-generated by `mise lock` https://mise.jdx.dev/dev-tools/mise-lock.html +# @generated - this file is auto-generated by `mise lock` https://mise.en.dev/dev-tools/mise-lock.html [[tools.apko]] version = "1.1.3" diff --git a/server/design/risk/design.go b/server/design/risk/design.go index 3c97360770..f6e78f0018 100644 --- a/server/design/risk/design.go +++ b/server/design/risk/design.go @@ -261,6 +261,15 @@ var _ = Service("risk", func() { Attribute("chat_id", String, "Optional chat ID to filter by.", func() { Format(FormatUUID) }) + Attribute("category", String, "Optional rule category key to filter by (e.g. secrets, pii, financial).") + Attribute("rule_id", String, "Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).") + Attribute("unique_match", Boolean, "If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.") + Attribute("from", String, "Filter results to messages created at or after this timestamp (ISO 8601).", func() { + Format(FormatDateTime) + }) + Attribute("to", String, "Filter results to messages created strictly before this timestamp (ISO 8601).", func() { + Format(FormatDateTime) + }) Attribute("cursor", String, "Cursor to fetch the next page of results.") Attribute("limit", Int, "Maximum number of results to return per page.", func() { Minimum(1) @@ -277,6 +286,11 @@ var _ = Service("risk", func() { security.ProjectHeader() Param("policy_id") Param("chat_id") + Param("category") + Param("rule_id") + Param("unique_match") + Param("from") + Param("to") Param("cursor") Param("limit") Response(StatusOK) diff --git a/server/gen/http/cli/gram/cli.go b/server/gen/http/cli/gram/cli.go index 6b6a8b66f6..0a3337cd6d 100644 --- a/server/gen/http/cli/gram/cli.go +++ b/server/gen/http/cli/gram/cli.go @@ -1281,6 +1281,11 @@ func ParseEndpoint( riskListRiskResultsForAgentFlags = flag.NewFlagSet("list-risk-results-for-agent", flag.ExitOnError) riskListRiskResultsForAgentPolicyIDFlag = riskListRiskResultsForAgentFlags.String("policy-id", "", "") riskListRiskResultsForAgentChatIDFlag = riskListRiskResultsForAgentFlags.String("chat-id", "", "") + riskListRiskResultsForAgentCategoryFlag = riskListRiskResultsForAgentFlags.String("category", "", "") + riskListRiskResultsForAgentRuleIDFlag = riskListRiskResultsForAgentFlags.String("rule-id", "", "") + riskListRiskResultsForAgentUniqueMatchFlag = riskListRiskResultsForAgentFlags.String("unique-match", "", "") + riskListRiskResultsForAgentFromFlag = riskListRiskResultsForAgentFlags.String("from", "", "") + riskListRiskResultsForAgentToFlag = riskListRiskResultsForAgentFlags.String("to", "", "") riskListRiskResultsForAgentCursorFlag = riskListRiskResultsForAgentFlags.String("cursor", "", "") riskListRiskResultsForAgentLimitFlag = riskListRiskResultsForAgentFlags.String("limit", "", "") riskListRiskResultsForAgentApikeyTokenFlag = riskListRiskResultsForAgentFlags.String("apikey-token", "", "") @@ -4070,7 +4075,7 @@ func ParseEndpoint( data, err = riskc.BuildListRiskResultsPayload(*riskListRiskResultsPolicyIDFlag, *riskListRiskResultsChatIDFlag, *riskListRiskResultsCategoryFlag, *riskListRiskResultsRuleIDFlag, *riskListRiskResultsUniqueMatchFlag, *riskListRiskResultsFromFlag, *riskListRiskResultsToFlag, *riskListRiskResultsCursorFlag, *riskListRiskResultsLimitFlag, *riskListRiskResultsApikeyTokenFlag, *riskListRiskResultsSessionTokenFlag, *riskListRiskResultsProjectSlugInputFlag) case "list-risk-results-for-agent": endpoint = c.ListRiskResultsForAgent() - data, err = riskc.BuildListRiskResultsForAgentPayload(*riskListRiskResultsForAgentPolicyIDFlag, *riskListRiskResultsForAgentChatIDFlag, *riskListRiskResultsForAgentCursorFlag, *riskListRiskResultsForAgentLimitFlag, *riskListRiskResultsForAgentApikeyTokenFlag, *riskListRiskResultsForAgentSessionTokenFlag, *riskListRiskResultsForAgentProjectSlugInputFlag) + data, err = riskc.BuildListRiskResultsForAgentPayload(*riskListRiskResultsForAgentPolicyIDFlag, *riskListRiskResultsForAgentChatIDFlag, *riskListRiskResultsForAgentCategoryFlag, *riskListRiskResultsForAgentRuleIDFlag, *riskListRiskResultsForAgentUniqueMatchFlag, *riskListRiskResultsForAgentFromFlag, *riskListRiskResultsForAgentToFlag, *riskListRiskResultsForAgentCursorFlag, *riskListRiskResultsForAgentLimitFlag, *riskListRiskResultsForAgentApikeyTokenFlag, *riskListRiskResultsForAgentSessionTokenFlag, *riskListRiskResultsForAgentProjectSlugInputFlag) case "list-risk-results-by-chat": endpoint = c.ListRiskResultsByChat() data, err = riskc.BuildListRiskResultsByChatPayload(*riskListRiskResultsByChatCursorFlag, *riskListRiskResultsByChatLimitFlag, *riskListRiskResultsByChatApikeyTokenFlag, *riskListRiskResultsByChatSessionTokenFlag, *riskListRiskResultsByChatProjectSlugInputFlag) @@ -9416,6 +9421,11 @@ func riskListRiskResultsForAgentUsage() { fmt.Fprintf(os.Stderr, "%s [flags] risk list-risk-results-for-agent", os.Args[0]) fmt.Fprint(os.Stderr, " -policy-id STRING") fmt.Fprint(os.Stderr, " -chat-id STRING") + fmt.Fprint(os.Stderr, " -category STRING") + fmt.Fprint(os.Stderr, " -rule-id STRING") + fmt.Fprint(os.Stderr, " -unique-match BOOL") + fmt.Fprint(os.Stderr, " -from STRING") + fmt.Fprint(os.Stderr, " -to STRING") fmt.Fprint(os.Stderr, " -cursor STRING") fmt.Fprint(os.Stderr, " -limit INT") fmt.Fprint(os.Stderr, " -apikey-token STRING") @@ -9430,6 +9440,11 @@ func riskListRiskResultsForAgentUsage() { // Flags list fmt.Fprintln(os.Stderr, ` -policy-id STRING: `) fmt.Fprintln(os.Stderr, ` -chat-id STRING: `) + fmt.Fprintln(os.Stderr, ` -category STRING: `) + fmt.Fprintln(os.Stderr, ` -rule-id STRING: `) + fmt.Fprintln(os.Stderr, ` -unique-match BOOL: `) + fmt.Fprintln(os.Stderr, ` -from STRING: `) + fmt.Fprintln(os.Stderr, ` -to STRING: `) fmt.Fprintln(os.Stderr, ` -cursor STRING: `) fmt.Fprintln(os.Stderr, ` -limit INT: `) fmt.Fprintln(os.Stderr, ` -apikey-token STRING: `) @@ -9438,7 +9453,7 @@ func riskListRiskResultsForAgentUsage() { fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-results-for-agent --policy-id \"550e8400-e29b-41d4-a716-446655440000\" --chat-id \"550e8400-e29b-41d4-a716-446655440000\" --cursor \"abc123\" --limit 2 --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "risk list-risk-results-for-agent --policy-id \"550e8400-e29b-41d4-a716-446655440000\" --chat-id \"550e8400-e29b-41d4-a716-446655440000\" --category \"abc123\" --rule-id \"abc123\" --unique-match false --from \"1970-01-01T00:00:01Z\" --to \"1970-01-01T00:00:01Z\" --cursor \"abc123\" --limit 2 --apikey-token \"abc123\" --session-token \"abc123\" --project-slug-input \"abc123\"") } func riskListRiskResultsByChatUsage() { diff --git a/server/gen/http/openapi3.json b/server/gen/http/openapi3.json index 7ee00df9b6..2a82e4d32f 100644 --- a/server/gen/http/openapi3.json +++ b/server/gen/http/openapi3.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/auth.callback":{"get":{"tags":["admin"],"summary":"callback admin","operationId":"admin#callback","parameters":[{"name":"code","in":"query","description":"The authorization code returned by the provider on success","allowEmptyValue":true,"schema":{"type":"string","description":"The authorization code returned by the provider on success"}},{"name":"state","in":"query","description":"The state parameter returned, which should match the one generated in the login step","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"The state parameter returned, which should match the one generated in the login step"}},{"name":"error","in":"query","description":"OAuth error code returned by the provider (e.g. login_required for prompt=none failures)","allowEmptyValue":true,"schema":{"type":"string","description":"OAuth error code returned by the provider (e.g. login_required for prompt=none failures)"}},{"name":"error_description","in":"query","description":"Human-readable OAuth error description","allowEmptyValue":true,"schema":{"type":"string","description":"Human-readable OAuth error description"}},{"name":"gram_admin_login_state","in":"cookie","description":"The state cookie value for CSRF sanity checking against the state parameter","allowEmptyValue":true,"schema":{"type":"string","description":"The state cookie value for CSRF sanity checking against the state parameter"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect the client to after processing the callback","schema":{"type":"string","description":"The URL to redirect the client to after processing the callback"}},"Set-Cookie":{"description":"Admin session cookie","schema":{"type":"string","description":"Admin session cookie"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/auth.login":{"get":{"tags":["admin"],"summary":"login admin","operationId":"admin#login","parameters":[{"name":"return_to","in":"query","description":"Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted."}},{"name":"prompt","in":"query","description":"Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication."}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect the user to for Google authentication","schema":{"type":"string","description":"The URL to redirect the user to for Google authentication"}},"Set-Cookie":{"description":"CSRF state cookie for sanity-checking the callback","schema":{"type":"string","description":"CSRF state cookie for sanity-checking the callback"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/auth.logout":{"post":{"tags":["admin"],"summary":"logout admin","operationId":"admin#logout","parameters":[{"name":"gram_admin","in":"cookie","description":"The session cookie value to clear for logging out","allowEmptyValue":true,"schema":{"type":"string","description":"The session cookie value to clear for logging out"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/organization.get":{"get":{"tags":["admin"],"summary":"getOrganization admin","description":"Returns full admin details for a single organization by id or slug.","operationId":"adminGetOrganization","parameters":[{"name":"id_or_slug","in":"query","description":"Organization ID or slug.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID or slug."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOrganization"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.members":{"get":{"tags":["admin"],"summary":"listOrganizationMembers admin","description":"Lists members of an organization (admin view, no auth scoping).","operationId":"adminListOrganizationMembers","parameters":[{"name":"organization_id","in":"query","description":"Organization ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationMembersResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.projects":{"get":{"tags":["admin"],"summary":"listOrganizationProjects admin","description":"Lists projects belonging to an organization (admin view, no auth scoping).","operationId":"adminListOrganizationProjects","parameters":[{"name":"organization_id","in":"query","description":"Organization ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationProjectsResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.update":{"post":{"tags":["admin"],"summary":"updateOrganization admin","description":"Updates admin-managed fields on an organization. At least one of account_type or whitelisted must be supplied.","operationId":"adminUpdateOrganization","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOrganization"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organizations.list":{"get":{"description":"Lists organizations for admin operations with optional search and filters.","operationId":"adminListOrganizations","parameters":[{"allowEmptyValue":true,"description":"Search term applied to name and slug (case-insensitive substring).","in":"query","name":"q","schema":{"description":"Search term applied to name and slug (case-insensitive substring).","type":"string"}},{"allowEmptyValue":true,"description":"Filter by gram_account_type (e.g. free, pro, enterprise).","in":"query","name":"account_type","schema":{"description":"Filter by gram_account_type (e.g. free, pro, enterprise).","type":"string"}},{"allowEmptyValue":true,"description":"Include organizations with disabled_at set. Defaults to false.","in":"query","name":"include_disabled","schema":{"description":"Include organizations with disabled_at set. Defaults to false.","type":"boolean"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"admin_auth_header_Authorization":[]}],"summary":"listOrganizations admin","tags":["admin"],"x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"}}},"/admin/project.get":{"get":{"tags":["admin"],"summary":"getProject admin","description":"Returns full admin details for a project by id or slug, including aggregated counts of child resources.","operationId":"adminGetProject","parameters":[{"name":"id_or_slug","in":"query","description":"Project ID or slug.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Project ID or slug."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProjectDetail"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRoles":{"put":{"description":"Update a team member's role assignments.","operationId":"updateMemberRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRolesForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRoles access","tags":["access"],"x-speakeasy-name-override":"updateMemberRoles","x-speakeasy-react-hook":{"name":"UpdateMemberRoles"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter to chats produced by this assistant","in":"query","name":"assistant_id","schema":{"description":"Filter to chats produced by this assistant","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter by whether chat has risk findings: 'true', 'false', or empty for no filter.","in":"query","name":"has_risk","schema":{"description":"Filter by whether chat has risk findings: 'true', 'false', or empty for no filter.","enum":["","true","false"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.listMcpEndpoints":{"get":{"description":"List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through.","operationId":"listCustomDomainMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCustomDomainMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listMcpEndpoints domains","tags":["domains"],"x-speakeasy-name-override":"listMcpEndpoints","x-speakeasy-react-hook":{"name":"CustomDomainMcpEndpoints"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.checkSlugAvailability":{"get":{"description":"Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.","operationId":"checkMcpEndpointSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","in":"query","name":"custom_domain_id","schema":{"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMcpEndpointSlugAvailability mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"checkSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMcpEndpointSlugAvailability"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.categories":{"get":{"description":"Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.","operationId":"listRiskCategories","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCategoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskCategories risk","tags":["risk"],"x-speakeasy-group":"risk.categories","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskCategories"}}},"/rpc/risk.overview.get":{"get":{"description":"Get risk overview metrics and trend data for the current project.","operationId":"getRiskOverview","parameters":[{"allowEmptyValue":true,"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","in":"query","name":"from","schema":{"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the overview window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the overview window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskOverview risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskOverview"}}},"/rpc/risk.overview.rules":{"get":{"description":"Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview.","operationId":"getRiskRuleBreakdown","parameters":[{"allowEmptyValue":true,"description":"Required category key to break down by rule_id (e.g. secrets, pii).","in":"query","name":"category","required":true,"schema":{"description":"Required category key to break down by rule_id (e.g. secrets, pii).","type":"string"}},{"allowEmptyValue":true,"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","in":"query","name":"from","schema":{"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskRuleBreakdownResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskRuleBreakdown risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"rules","x-speakeasy-react-hook":{"name":"RiskRuleBreakdown"}}},"/rpc/risk.overview.userBreakdown":{"get":{"description":"Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview.","operationId":"getRiskUserBreakdown","parameters":[{"allowEmptyValue":true,"description":"External user identifier to scope the breakdown to.","in":"query","name":"external_user_id","required":true,"schema":{"description":"External user identifier to scope the breakdown to.","type":"string"}},{"allowEmptyValue":true,"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","in":"query","name":"from","schema":{"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskUserBreakdownResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskUserBreakdown risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"userBreakdown","x-speakeasy-react-hook":{"name":"RiskUserBreakdown"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional rule category key to filter by (e.g. secrets, pii, financial).","in":"query","name":"category","schema":{"description":"Optional rule category key to filter by (e.g. secrets, pii, financial).","type":"string"}},{"allowEmptyValue":true,"description":"Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).","in":"query","name":"rule_id","schema":{"description":"Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).","type":"string"}},{"allowEmptyValue":true,"description":"If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.","in":"query","name":"unique_match","schema":{"description":"If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.","type":"boolean"}},{"allowEmptyValue":true,"description":"Filter results to messages created at or after this timestamp (ISO 8601).","in":"query","name":"from","schema":{"description":"Filter results to messages created at or after this timestamp (ISO 8601).","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter results to messages created strictly before this timestamp (ISO 8601).","in":"query","name":"to","schema":{"description":"Filter results to messages created strictly before this timestamp (ISO 8601).","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_ids":{"type":"array","items":{"type":"string"},"description":"All role IDs assigned to this member."}},"required":["id","name","email","role_ids","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AdminListOrganizationMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AdminOrganizationMember"},"description":"The members of the organization."}},"required":["members"]},"AdminListOrganizationProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/AdminProject"},"description":"The projects belonging to the organization."}},"required":["projects"]},"AdminListOrganizationsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/AdminOrganization"},"description":"The page of organizations."}},"required":["organizations"]},"AdminOrganization":{"type":"object","properties":{"account_type":{"type":"string","description":"Gram account type (e.g. free, pro, enterprise)."},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"disabled_at":{"type":"string","description":"The time at which the organization was disabled, if any.","format":"date-time"},"free_trial_ends_at":{"type":"string","description":"The time at which the free trial ends.","format":"date-time"},"free_trial_started_at":{"type":"string","description":"The time at which the free trial started.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"member_count":{"type":"integer","description":"Number of active members in the organization.","format":"int64"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted for full access."},"workos_id":{"type":"string","description":"WorkOS organization ID, if linked."}},"description":"Organization details surfaced to admin operators.","required":["id","name","slug","account_type","whitelisted","member_count","created_at","updated_at"]},"AdminOrganizationMember":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"User display name."},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"User ID."},"last_login":{"type":"string","description":"The time the user last logged in, if any.","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"description":"Organization member surfaced to admin operators.","required":["id","email","display_name","created_at","updated_at"]},"AdminProject":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"description":"Project summary surfaced to admin operators.","required":["id","name","slug","created_at","updated_at"]},"AdminProjectDetail":{"type":"object","properties":{"api_key_count":{"type":"integer","description":"Number of active API keys in the project.","format":"int64"},"assistant_count":{"type":"integer","description":"Number of active assistants in the project.","format":"int64"},"created_at":{"type":"string","format":"date-time"},"deployment_count":{"type":"integer","description":"Total number of deployments in the project.","format":"int64"},"environment_count":{"type":"integer","description":"Number of active environments in the project.","format":"int64"},"functions_runner_version":{"type":"string","description":"Functions runner version pin, if set."},"http_tool_count":{"type":"integer","description":"Number of active HTTP tool definitions in the project.","format":"int64"},"id":{"type":"string","description":"Project ID."},"logo_asset_id":{"type":"string","description":"Project logo asset ID, if set."},"name":{"type":"string","description":"Project name."},"organization_id":{"type":"string","description":"Owning organization ID."},"slug":{"type":"string","description":"Project slug."},"toolset_count":{"type":"integer","description":"Number of active toolsets in the project.","format":"int64"},"updated_at":{"type":"string","format":"date-time"}},"description":"Full project detail surfaced to admin operators, including aggregated counts of child resources.","required":["id","name","slug","organization_id","toolset_count","deployment_count","http_tool_count","environment_count","api_key_count","assistant_count","created_at","updated_at"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"decision":{"type":"string","description":"Top-level block decision for UserPromptSubmit / PostToolUse / Stop / SubagentStop. Use 'block' to halt processing."},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"reason":{"type":"string","description":"Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude (PostToolUse/Stop)."},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange for the cloned client.","pattern":"^[!-~]+$","maxLength":512},"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for the cloned client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the cloned client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. When set, MCP clients are required to authenticate against this issuer before connecting.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["name","visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange.","pattern":"^[!-~]+$","maxLength":512},"client_id":{"type":"string","description":"client_id supplied by the caller."},"client_secret":{"type":"string","description":"client_secret supplied by the caller. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for this client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Caller supplies client_id (and optional client_secret) obtained out-of-band from the upstream issuer.","required":["remote_session_issuer_id","user_session_issuer_id","client_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"CustomDomainMcpEndpoint":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the parent MCP server","format":"uuid"},"mcp_server_name":{"type":"string","description":"The display name of the parent MCP server. May be empty if the parent has no configured name."},"mcp_server_slug":{"type":"string","description":"The url-friendly slug of the parent MCP server. May be empty if the parent has no configured slug."},"project_id":{"type":"string","description":"The ID of the project the endpoint belongs to","format":"uuid"},"project_name":{"type":"string","description":"The display name of the project the endpoint belongs to"},"project_slug":{"type":"string","description":"The url-friendly slug of the project the endpoint belongs to"},"slug":{"type":"string","description":"The endpoint slug"}},"description":"An MCP endpoint registered under a custom domain, with its parent MCP server and project denormalised for display in the dashboard's delete-impact preview.","required":["id","slug","project_id","project_name","project_slug","mcp_server_id"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListCustomDomainMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/CustomDomainMcpEndpoint"}}},"description":"Result of listing the MCP endpoints registered under an organization's custom domain.","required":["mcp_endpoints"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"slug":{"type":"string","description":"A URL-safe, project-unique slug derived server-side from the name and ID"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication for this server, if any.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"audience":{"type":"string","description":"Upstream OAuth audience sent on the authorize redirect and token exchange. Null omits the audience parameter."},"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string"},"description":"Explicit upstream OAuth scopes the dance requests for this client. Null falls back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Null resolves to client_secret_basic at runtime.","enum":["client_secret_basic","client_secret_post"]},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskCategoriesResult":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskCategoryDefinition"},"description":"Categories in classification-priority order. The last entry is the 'custom' fallback for findings that match none of the others."}},"description":"Canonical risk category definitions used to classify findings, in classification-priority order. Consumers should iterate in order and pick the first match.","required":["categories"]},"RiskCategoryDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Plain-English description of what this category covers."},"icon":{"type":"string","description":"Lucide icon name suggested for this category."},"key":{"type":"string","description":"Canonical category key (e.g. 'secrets', 'pii', 'shadow_mcp')."},"label":{"type":"string","description":"Human-readable category label for UI rendering."},"rule_id_prefix":{"type":"string","description":"When non-empty, findings whose rule_id starts with this prefix belong to this category. The catch-all for a family (e.g. 'pii.')."},"rule_ids":{"type":"array","items":{"type":"string"},"description":"When non-empty, findings whose rule_id is in this exact list belong to this category. Checked before rule_id_prefix."},"source":{"type":"string","description":"When non-empty, findings whose source equals this value belong to this category."}},"description":"One canonical risk category and how findings are classified into it.","required":["key","label","description","icon","source","rule_ids","rule_id_prefix"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskOverviewCategory":{"type":"object","properties":{"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category.","format":"int64"}},"required":["category","findings"]},"RiskOverviewResult":{"type":"object","properties":{"active_policies":{"type":"integer","description":"Enabled risk policies for the current project.","format":"int64"},"findings":{"type":"integer","description":"Policy findings in the window.","format":"int64"},"flagged_sessions":{"type":"integer","description":"Chat sessions with at least one finding in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the overview window.","format":"date-time"},"messages_scanned":{"type":"integer","description":"Messages analyzed by risk policies in the window.","format":"int64"},"time_series_findings":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewTimeSeriesFinding"},"description":"Time-series finding counts by category in the window."},"to":{"type":"string","description":"Exclusive end of the overview window.","format":"date-time"},"top_categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Top policy categories by finding count."},"top_rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Top rule_ids by finding count."},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewUser"},"description":"Top users by finding count."}},"required":["from","to","messages_scanned","findings","flagged_sessions","active_policies","top_categories","top_users","top_rules","time_series_findings"]},"RiskOverviewTimeSeriesFinding":{"type":"object","properties":{"bucket_start":{"type":"string","description":"Time bucket start.","format":"date-time"},"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category and time bucket.","format":"int64"}},"required":["bucket_start","category","findings"]},"RiskOverviewUser":{"type":"object","properties":{"email":{"type":"string","description":"User email, or Unknown user when unavailable."},"external_user_id":{"type":"string","description":"External user identifier as recorded on chats, when known. Empty when the finding cannot be attributed to an external user."},"findings":{"type":"integer","description":"Finding count for this user.","format":"int64"}},"required":["email","external_user_id","findings"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"RiskRuleBreakdownEntry":{"type":"object","properties":{"findings":{"type":"integer","description":"Finding count for this rule within the window.","format":"int64"},"rule_id":{"type":"string","description":"Rule identifier (e.g. 'secret.aws-access-key'). Empty when the finding has no rule_id (treat as 'unspecified')."},"source":{"type":"string","description":"Source bucket the rule belongs to (gitleaks, presidio, etc.) for label/icon resolution on the dashboard."}},"required":["rule_id","source","findings"]},"RiskRuleBreakdownResult":{"type":"object","properties":{"category":{"type":"string","description":"Category the breakdown is scoped to."},"from":{"type":"string","description":"Inclusive start of the window used.","format":"date-time"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Rules in this category, ordered by finding count descending."},"to":{"type":"string","description":"Exclusive end of the window used.","format":"date-time"},"total":{"type":"integer","description":"Total findings across all rules in this category and window.","format":"int64"}},"required":["from","to","category","rules","total"]},"RiskUserBreakdownResult":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Category breakdown for this user, ordered by finding count descending."},"external_user_id":{"type":"string","description":"External user the breakdown is scoped to."},"findings":{"type":"integer","description":"Total findings for this user in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the window used.","format":"date-time"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Rule_id breakdown for this user, ordered by finding count descending."},"to":{"type":"string","description":"Exclusive end of the window used.","format":"date-time"}},"required":["from","to","external_user_id","findings","categories","rules"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"RoleSummary":{"type":"object","properties":{"cost_per_user":{"type":"number","description":"Average cost per user (total_cost / user_count)","format":"double"},"role_id":{"type":"string","description":"Role identifier extracted from role URN"},"role_name":{"type":"string","description":"Human-readable role name"},"total_chats":{"type":"integer","description":"Total chat sessions across all users","format":"int64"},"total_cost":{"type":"number","description":"Total cost across all users with this role","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens across all users","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens across all users","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens across all users","format":"int64"},"user_count":{"type":"integer","description":"Number of users with this role","format":"int64"}},"description":"Aggregated usage summary for a role","required":["role_id","role_name","user_count","total_cost","cost_per_user","total_input_tokens","total_output_tokens","total_tokens","total_chats"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"group_by":{"type":"string","description":"Grouping dimension for results","default":"employee","enum":["employee","role"]},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleSummary"},"description":"List of role usage summaries (populated when group_by=role)"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries (populated when group_by=employee)"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server. Omit to leave the existing name unchanged; if provided, must be non-empty."},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. Omit to disable issuer-gated OAuth.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided. Omit name to leave the existing display name unchanged; the slug is recomputed server-side from the resulting name.","required":["id","visibility"]},"UpdateMemberRolesForm":{"type":"object","properties":{"role_ids":{"type":"array","items":{"type":"string"},"description":"The role IDs to assign. Replaces all existing role assignments."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_ids"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdateOrganizationRequestBody":{"type":"object","properties":{"account_type":{"type":"string","description":"New gram_account_type (e.g. free, pro, enterprise)."},"id":{"type":"string","description":"Organization ID."},"whitelisted":{"type":"boolean","description":"New whitelisted flag."}},"required":["id"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Replace the upstream OAuth audience sent for this client. Omit to leave unchanged.","pattern":"^[!-~]+$","maxLength":512},"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Replace the explicit upstream OAuth scopes for this client. Omit to leave unchanged."},"token_endpoint_auth_method":{"type":"string","description":"Change how the client authenticates at the issuer's token endpoint.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"admin_auth_header_Authorization":{"type":"apiKey","description":"Admin session auth for admin endpoints. Cookie-only credential; session is validated against Google on every request.","name":"Authorization","in":"header"},"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operations supporting admin tasks, protected by Google workspace auth."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"Gram API Description","description":"Gram is the tools platform for AI agents","version":"0.0.1"},"servers":[{"url":"https://app.getgram.ai"}],"paths":{"/admin/auth.callback":{"get":{"tags":["admin"],"summary":"callback admin","operationId":"admin#callback","parameters":[{"name":"code","in":"query","description":"The authorization code returned by the provider on success","allowEmptyValue":true,"schema":{"type":"string","description":"The authorization code returned by the provider on success"}},{"name":"state","in":"query","description":"The state parameter returned, which should match the one generated in the login step","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"The state parameter returned, which should match the one generated in the login step"}},{"name":"error","in":"query","description":"OAuth error code returned by the provider (e.g. login_required for prompt=none failures)","allowEmptyValue":true,"schema":{"type":"string","description":"OAuth error code returned by the provider (e.g. login_required for prompt=none failures)"}},{"name":"error_description","in":"query","description":"Human-readable OAuth error description","allowEmptyValue":true,"schema":{"type":"string","description":"Human-readable OAuth error description"}},{"name":"gram_admin_login_state","in":"cookie","description":"The state cookie value for CSRF sanity checking against the state parameter","allowEmptyValue":true,"schema":{"type":"string","description":"The state cookie value for CSRF sanity checking against the state parameter"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect the client to after processing the callback","schema":{"type":"string","description":"The URL to redirect the client to after processing the callback"}},"Set-Cookie":{"description":"Admin session cookie","schema":{"type":"string","description":"Admin session cookie"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/auth.login":{"get":{"tags":["admin"],"summary":"login admin","operationId":"admin#login","parameters":[{"name":"return_to","in":"query","description":"Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional URL to return the user to after login. Relative paths and absolute URLs whose origin is in the admin allowed-origins list are accepted."}},{"name":"prompt","in":"query","description":"Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional OAuth prompt parameter forwarded to the provider. Pass 'none' to attempt silent re-authentication."}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect the user to for Google authentication","schema":{"type":"string","description":"The URL to redirect the user to for Google authentication"}},"Set-Cookie":{"description":"CSRF state cookie for sanity-checking the callback","schema":{"type":"string","description":"CSRF state cookie for sanity-checking the callback"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/auth.logout":{"post":{"tags":["admin"],"summary":"logout admin","operationId":"admin#logout","parameters":[{"name":"gram_admin","in":"cookie","description":"The session cookie value to clear for logging out","allowEmptyValue":true,"schema":{"type":"string","description":"The session cookie value to clear for logging out"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/admin/organization.get":{"get":{"tags":["admin"],"summary":"getOrganization admin","description":"Returns full admin details for a single organization by id or slug.","operationId":"adminGetOrganization","parameters":[{"name":"id_or_slug","in":"query","description":"Organization ID or slug.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID or slug."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOrganization"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.members":{"get":{"tags":["admin"],"summary":"listOrganizationMembers admin","description":"Lists members of an organization (admin view, no auth scoping).","operationId":"adminListOrganizationMembers","parameters":[{"name":"organization_id","in":"query","description":"Organization ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationMembersResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.projects":{"get":{"tags":["admin"],"summary":"listOrganizationProjects admin","description":"Lists projects belonging to an organization (admin view, no auth scoping).","operationId":"adminListOrganizationProjects","parameters":[{"name":"organization_id","in":"query","description":"Organization ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Organization ID."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationProjectsResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organization.update":{"post":{"tags":["admin"],"summary":"updateOrganization admin","description":"Updates admin-managed fields on an organization. At least one of account_type or whitelisted must be supplied.","operationId":"adminUpdateOrganization","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOrganization"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/admin/organizations.list":{"get":{"description":"Lists organizations for admin operations with optional search and filters.","operationId":"adminListOrganizations","parameters":[{"allowEmptyValue":true,"description":"Search term applied to name and slug (case-insensitive substring).","in":"query","name":"q","schema":{"description":"Search term applied to name and slug (case-insensitive substring).","type":"string"}},{"allowEmptyValue":true,"description":"Filter by gram_account_type (e.g. free, pro, enterprise).","in":"query","name":"account_type","schema":{"description":"Filter by gram_account_type (e.g. free, pro, enterprise).","type":"string"}},{"allowEmptyValue":true,"description":"Include organizations with disabled_at set. Defaults to false.","in":"query","name":"include_disabled","schema":{"description":"Include organizations with disabled_at set. Defaults to false.","type":"boolean"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListOrganizationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"admin_auth_header_Authorization":[]}],"summary":"listOrganizations admin","tags":["admin"],"x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"}}},"/admin/project.get":{"get":{"tags":["admin"],"summary":"getProject admin","description":"Returns full admin details for a project by id or slug, including aggregated counts of child resources.","operationId":"adminGetProject","parameters":[{"name":"id_or_slug","in":"query","description":"Project ID or slug.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Project ID or slug."}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProjectDetail"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"admin_auth_header_Authorization":[]}]}},"/rpc/access.createRole":{"post":{"description":"Create a new custom role.","operationId":"createRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createRole access","tags":["access"],"x-speakeasy-name-override":"createRole","x-speakeasy-react-hook":{"name":"CreateRole"}}},"/rpc/access.deleteRole":{"delete":{"description":"Delete a custom role (system roles cannot be deleted).","operationId":"deleteRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role to delete.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role to delete.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteRole access","tags":["access"],"x-speakeasy-name-override":"deleteRole","x-speakeasy-react-hook":{"name":"DeleteRole"}}},"/rpc/access.disableRBAC":{"post":{"description":"Disable RBAC enforcement for the current organization.","operationId":"disableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableRBAC access","tags":["access"],"x-speakeasy-name-override":"disableRBAC","x-speakeasy-react-hook":{"name":"DisableRBAC"}}},"/rpc/access.enableRBAC":{"post":{"description":"Enable RBAC for the current organization. Seeds default grants for system roles.","operationId":"enableRBAC","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableRBAC access","tags":["access"],"x-speakeasy-name-override":"enableRBAC","x-speakeasy-react-hook":{"name":"EnableRBAC"}}},"/rpc/access.getRBACStatus":{"get":{"description":"Returns whether RBAC is currently enabled for the current organization.","operationId":"getRBACStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RBACStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getRBACStatus access","tags":["access"],"x-speakeasy-name-override":"getRBACStatus","x-speakeasy-react-hook":{"name":"RBACStatus"}}},"/rpc/access.getRole":{"get":{"description":"Get a role by ID.","operationId":"getRole","parameters":[{"allowEmptyValue":true,"description":"The ID of the role.","in":"query","name":"id","required":true,"schema":{"description":"The ID of the role.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getRole access","tags":["access"],"x-speakeasy-name-override":"getRole","x-speakeasy-react-hook":{"name":"Role"}}},"/rpc/access.listChallengeBuckets":{"get":{"description":"List authz challenges grouped into time-based burst buckets. Consecutive challenges with the same dimensions within a 10-minute window are collapsed into a single bucket.","operationId":"listChallengeBuckets","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Maximum number of buckets to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of buckets to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of buckets to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of buckets to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengeBucketsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallengeBuckets access","tags":["access"],"x-speakeasy-name-override":"listChallengeBuckets","x-speakeasy-react-hook":{"name":"ChallengeBuckets"}}},"/rpc/access.listChallenges":{"get":{"description":"List authz challenge events from ClickHouse, enriched with resolution state from PostgreSQL.","operationId":"listChallenges","parameters":[{"allowEmptyValue":true,"description":"Filter by outcome.","in":"query","name":"outcome","schema":{"description":"Filter by outcome.","enum":["allow","deny"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter by principal URN.","in":"query","name":"principal_urn","schema":{"description":"Filter by principal URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by scope.","in":"query","name":"scope","schema":{"description":"Filter by scope.","type":"string"}},{"allowEmptyValue":true,"description":"Filter to a specific project.","in":"query","name":"project_id","schema":{"description":"Filter to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution state. True = only resolved, false = only unresolved.","in":"query","name":"resolved","schema":{"description":"Filter by resolution state. True = only resolved, false = only unresolved.","type":"boolean"}},{"allowEmptyValue":true,"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","in":"query","name":"ids","schema":{"description":"Fetch specific challenges by ID. When set, other filters and pagination are ignored.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Maximum number of results to return.","in":"query","name":"limit","schema":{"default":50,"description":"Maximum number of results to return.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Number of results to skip.","in":"query","name":"offset","schema":{"default":0,"description":"Number of results to skip.","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChallengesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listChallenges access","tags":["access"],"x-speakeasy-name-override":"listChallenges","x-speakeasy-react-hook":{"name":"Challenges"}}},"/rpc/access.listGrants":{"get":{"description":"List the current user's effective grants, including inherited role grants.","operationId":"listGrants","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserGrantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listGrants access","tags":["access"],"x-speakeasy-name-override":"listGrants","x-speakeasy-react-hook":{"name":"Grants"}}},"/rpc/access.listMembers":{"get":{"description":"List all team members with their role assignments.","operationId":"listMembers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMembersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listMembers access","tags":["access"],"x-speakeasy-name-override":"listMembers","x-speakeasy-react-hook":{"name":"Members"}}},"/rpc/access.listRoles":{"get":{"description":"List all roles for the current organization.","operationId":"listRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRolesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listRoles access","tags":["access"],"x-speakeasy-name-override":"listRoles","x-speakeasy-react-hook":{"name":"Roles"}}},"/rpc/access.listScopes":{"get":{"description":"List all available scopes and their resource types.","operationId":"listScopes","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScopesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listScopes access","tags":["access"],"x-speakeasy-name-override":"listScopes","x-speakeasy-react-hook":{"name":"ListScopes"}}},"/rpc/access.resolveChallenge":{"post":{"description":"Record resolutions for one or more denied authz challenges. The caller is responsible for assigning the role first.","operationId":"resolveChallenge","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengeForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveChallengesResult"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"resolveChallenge access","tags":["access"],"x-speakeasy-name-override":"resolveChallenge","x-speakeasy-react-hook":{"name":"ResolveChallenge"}}},"/rpc/access.updateMemberRoles":{"put":{"description":"Update a team member's role assignments.","operationId":"updateMemberRoles","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRolesForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMember"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateMemberRoles access","tags":["access"],"x-speakeasy-name-override":"updateMemberRoles","x-speakeasy-react-hook":{"name":"UpdateMemberRoles"}}},"/rpc/access.updateRole":{"put":{"description":"Update an existing custom role.","operationId":"updateRole","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"updateRole access","tags":["access"],"x-speakeasy-name-override":"updateRole","x-speakeasy-react-hook":{"name":"UpdateRole"}}},"/rpc/assets.createSignedChatAttachmentURL":{"post":{"description":"Create a time-limited signed URL to access a chat attachment without authentication.","operationId":"createSignedChatAttachmentURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignedChatAttachmentURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"createSignedChatAttachmentURL assets","tags":["assets"],"x-speakeasy-name-override":"createSignedChatAttachmentURL","x-speakeasy-react-hook":{"name":"CreateSignedChatAttachmentURL"}}},"/rpc/assets.fetchOpenAPIv3FromURL":{"post":{"description":"Fetch an OpenAPI v3 document from a URL and upload it to Gram.","operationId":"fetchOpenAPIv3FromURL","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOpenAPIv3FromURLForm2"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"fetchOpenAPIv3FromURL assets","tags":["assets"],"x-speakeasy-name-override":"fetchOpenAPIv3FromURL","x-speakeasy-react-hook":{"name":"FetchOpenAPIv3FromURL"}}},"/rpc/assets.list":{"get":{"description":"List all assets for a project.","operationId":"listAssets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssets assets","tags":["assets"],"x-speakeasy-name-override":"listAssets","x-speakeasy-react-hook":{"name":"ListAssets"}}},"/rpc/assets.serveChatAttachment":{"get":{"description":"Serve a chat attachment from Gram.","operationId":"serveChatAttachment","parameters":[{"allowEmptyValue":true,"description":"The ID of the attachment to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the attachment to serve","type":"string"}},{"allowEmptyValue":true,"description":"The project ID that the attachment belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The project ID that the attachment belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"serveChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachment","x-speakeasy-react-hook":{"name":"serveChatAttachment"}}},"/rpc/assets.serveChatAttachmentSigned":{"get":{"description":"Serve a chat attachment using a signed URL token.","operationId":"serveChatAttachmentSigned","parameters":[{"allowEmptyValue":true,"description":"The signed JWT token","in":"query","name":"token","required":true,"schema":{"description":"The signed JWT token","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveChatAttachmentSigned assets","tags":["assets"],"x-speakeasy-name-override":"serveChatAttachmentSigned","x-speakeasy-react-hook":{"name":"serveChatAttachmentSigned"}}},"/rpc/assets.serveFunction":{"get":{"description":"Serve a Gram Functions asset from Gram.","operationId":"serveFunction","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveFunction assets","tags":["assets"],"x-speakeasy-name-override":"serveFunction","x-speakeasy-react-hook":{"name":"serveFunction"}}},"/rpc/assets.serveImage":{"get":{"description":"Serve an image from Gram.","operationId":"serveImage","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"serveImage assets","tags":["assets"],"x-speakeasy-name-override":"serveImage","x-speakeasy-react-hook":{"name":"serveImage"}}},"/rpc/assets.serveOpenAPIv3":{"get":{"description":"Serve an OpenAPIv3 asset from Gram.","operationId":"serveOpenAPIv3","parameters":[{"allowEmptyValue":true,"description":"The ID of the asset to serve","in":"query","name":"id","required":true,"schema":{"description":"The ID of the asset to serve","type":"string"}},{"allowEmptyValue":true,"description":"The procect ID that the asset belongs to","in":"query","name":"project_id","required":true,"schema":{"description":"The procect ID that the asset belongs to","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Length":{"schema":{"format":"int64","type":"integer"}},"Content-Type":{"schema":{"type":"string"}},"Last-Modified":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"serveOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"serveOpenAPIv3","x-speakeasy-react-hook":{"name":"serveOpenAPIv3"}}},"/rpc/assets.uploadChatAttachment":{"post":{"description":"Upload a chat attachment to Gram.","operationId":"uploadChatAttachment","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadChatAttachmentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[],"project_slug_header_Gram-Project":[]}],"summary":"uploadChatAttachment assets","tags":["assets"],"x-speakeasy-name-override":"uploadChatAttachment","x-speakeasy-react-hook":{"name":"UploadChatAttachment"}}},"/rpc/assets.uploadFunctions":{"post":{"description":"Upload functions to Gram.","operationId":"uploadFunctions","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadFunctionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadFunctions assets","tags":["assets"],"x-speakeasy-name-override":"uploadFunctions","x-speakeasy-react-hook":{"name":"UploadFunctions"}}},"/rpc/assets.uploadImage":{"post":{"description":"Upload an image to Gram.","operationId":"uploadImage","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadImage assets","tags":["assets"],"x-speakeasy-name-override":"uploadImage","x-speakeasy-react-hook":{"name":"UploadImage"}}},"/rpc/assets.uploadOpenAPIv3":{"post":{"description":"Upload an OpenAPI v3 document to Gram.","operationId":"uploadOpenAPIv3Asset","parameters":[{"allowEmptyValue":true,"in":"header","name":"Content-Type","required":true,"schema":{"type":"string"}},{"allowEmptyValue":true,"in":"header","name":"Content-Length","required":true,"schema":{"format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOpenAPIv3Result"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"uploadOpenAPIv3 assets","tags":["assets"],"x-speakeasy-name-override":"uploadOpenAPIv3","x-speakeasy-react-hook":{"name":"UploadOpenAPIv3"}}},"/rpc/assistantMemories.delete":{"delete":{"description":"Delete an assistant memory by ID.","operationId":"deleteAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"delete"}},"/rpc/assistantMemories.get":{"get":{"description":"Get an assistant memory by ID.","operationId":"getAssistantMemory","parameters":[{"allowEmptyValue":true,"description":"The assistant memory ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant memory ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantMemory"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistantMemory assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetAssistantMemory"}}},"/rpc/assistantMemories.list":{"get":{"description":"List assistant memories for an assistant.","operationId":"listAssistantMemories","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"assistant_id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional tags to filter memories by.","in":"query","name":"tags","schema":{"description":"Optional tags to filter memories by.","items":{"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Whether to include soft-deleted memories.","in":"query","name":"include_deleted","schema":{"default":false,"description":"Whether to include soft-deleted memories.","type":"boolean"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from.","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from.","type":"string"}},{"allowEmptyValue":true,"description":"The number of memories to return per page.","in":"query","name":"limit","schema":{"default":50,"description":"The number of memories to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantMemoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistantMemories assistantMemories","tags":["assistantMemories"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"ListAssistantMemories"}}},"/rpc/assistants.create":{"post":{"description":"Create an assistant.","operationId":"createAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"create"}},"/rpc/assistants.delete":{"delete":{"description":"Delete an assistant.","operationId":"deleteAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"delete"}},"/rpc/assistants.get":{"get":{"description":"Get an assistant by ID.","operationId":"getAssistant","parameters":[{"allowEmptyValue":true,"description":"The assistant ID.","in":"query","name":"id","required":true,"schema":{"description":"The assistant ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"get"}},"/rpc/assistants.list":{"get":{"description":"List assistants for the current project.","operationId":"listAssistants","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAssistantsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAssistants assistants","tags":["assistants"],"x-speakeasy-name-override":"list"}},"/rpc/assistants.update":{"post":{"description":"Update an assistant.","operationId":"updateAssistant","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssistantForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assistant"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateAssistant assistants","tags":["assistants"],"x-speakeasy-name-override":"update"}},"/rpc/auditlogs.list":{"get":{"description":"List audit logs across organization and projects.","operationId":"listAuditLogs","parameters":[{"allowEmptyValue":true,"description":"The cursor for paginating through audit logs.","in":"query","name":"cursor","schema":{"description":"The cursor for paginating through audit logs.","type":"string"}},{"allowEmptyValue":true,"description":"Project slug to filter audit logs to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter audit logs to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"Actor ID to filter audit logs to a specific actor.","in":"query","name":"actor_id","schema":{"description":"Actor ID to filter audit logs to a specific actor.","type":"string"}},{"allowEmptyValue":true,"description":"Action to filter audit logs to a specific action.","in":"query","name":"action","schema":{"description":"Action to filter audit logs to a specific action.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"list auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"AuditLogs"}}},"/rpc/auditlogs.listFacets":{"get":{"description":"List available audit log facet values across organization and projects.","operationId":"listAuditLogFacets","parameters":[{"allowEmptyValue":true,"description":"Project slug to filter facet values to a specific project.","in":"query","name":"project_slug","schema":{"description":"Project slug to filter facet values to a specific project.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuditLogFacetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listFacets auditlogs","tags":["auditlogs"],"x-speakeasy-name-override":"listFacets","x-speakeasy-react-hook":{"name":"AuditLogFacets"}}},"/rpc/auth.callback":{"get":{"description":"Handles the authentication callback.","operationId":"authCallback","parameters":[{"allowEmptyValue":true,"description":"The auth code for authentication from the speakeasy system","in":"query","name":"code","required":true,"schema":{"description":"The auth code for authentication from the speakeasy system","type":"string"}},{"allowEmptyValue":true,"description":"The opaque state string optionally provided during initialization.","in":"query","name":"state","schema":{"description":"The opaque state string optionally provided during initialization.","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"callback auth","tags":["auth"],"x-speakeasy-name-override":"callback","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.info":{"get":{"description":"Provides information about the current authentication status.","operationId":"sessionInfo","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponseBody"}}},"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"info auth","tags":["auth"],"x-speakeasy-name-override":"info","x-speakeasy-react-hook":{"name":"SessionInfo"}}},"/rpc/auth.login":{"get":{"description":"Proxies to auth login through speakeasy oidc.","operationId":"authLogin","parameters":[{"allowEmptyValue":true,"description":"Optional URL to redirect to after successful authentication","in":"query","name":"redirect","schema":{"description":"Optional URL to redirect to after successful authentication","type":"string"}}],"responses":{"307":{"description":"Temporary Redirect response.","headers":{"Location":{"description":"The URL to redirect to after authentication","schema":{"description":"The URL to redirect to after authentication","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"login auth","tags":["auth"],"x-speakeasy-name-override":"login","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/auth.logout":{"post":{"description":"Logs out the current user by clearing their session.","operationId":"logout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Set-Cookie":{"description":"Empty string to clear the session","schema":{"description":"Empty string to clear the session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"logout auth","tags":["auth"],"x-speakeasy-name-override":"logout","x-speakeasy-react-hook":{"name":"Logout"}}},"/rpc/auth.register":{"post":{"description":"Register a new org for a user with their session information.","operationId":"register","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"register auth","tags":["auth"],"x-speakeasy-name-override":"register","x-speakeasy-react-hook":{"name":"Register"}}},"/rpc/auth.switchScopes":{"post":{"description":"Switches the authentication scope to a different organization.","operationId":"switchAuthScopes","parameters":[{"allowEmptyValue":true,"description":"The organization slug to switch scopes","in":"query","name":"organization_id","schema":{"description":"The organization slug to switch scopes","type":"string"}},{"allowEmptyValue":true,"description":"The project id to switch scopes too","in":"query","name":"project_id","schema":{"description":"The project id to switch scopes too","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response.","headers":{"Gram-Session":{"description":"Session header","schema":{"description":"Session header","type":"string"}},"Set-Cookie":{"description":"The authentication session","schema":{"description":"The authentication session","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"switchScopes auth","tags":["auth"],"x-speakeasy-name-override":"switchScopes","x-speakeasy-react-hook":{"name":"SwitchScopes"}}},"/rpc/chat.creditUsage":{"get":{"description":"Get the total number of chat credits and usage for the current billing period","operationId":"creditUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"creditUsage chat","tags":["chat"],"x-speakeasy-name-override":"creditUsage","x-speakeasy-react-hook":{"name":"GetCreditUsage"}}},"/rpc/chat.delete":{"delete":{"description":"Soft-delete a chat by its ID","operationId":"deleteChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteChat chat","tags":["chat"],"x-speakeasy-name-override":"delete"}},"/rpc/chat.generateTitle":{"post":{"description":"Generate a title for a chat based on its messages","operationId":"generateTitle","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServeImageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"generateTitle chat","tags":["chat"],"x-speakeasy-name-override":"generateTitle"}},"/rpc/chat.list":{"get":{"description":"List all chats for a project","operationId":"listChats","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChats chat","tags":["chat"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListChats"}}},"/rpc/chat.listChatsWithResolutions":{"get":{"description":"List all chats for a project with their resolutions","operationId":"listChatsWithResolutions","parameters":[{"allowEmptyValue":true,"description":"Search query (searches chat ID, user ID, and title)","in":"query","name":"search","schema":{"description":"Search query (searches chat ID, user ID, and title)","type":"string"}},{"allowEmptyValue":true,"description":"Filter by external user ID","in":"query","name":"external_user_id","schema":{"description":"Filter by external user ID","type":"string"}},{"allowEmptyValue":true,"description":"Filter to chats produced by this assistant","in":"query","name":"assistant_id","schema":{"description":"Filter to chats produced by this assistant","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by resolution status","in":"query","name":"resolution_status","schema":{"description":"Filter by resolution status","type":"string"}},{"allowEmptyValue":true,"description":"Filter by whether chat has risk findings: 'true', 'false', or empty for no filter.","in":"query","name":"has_risk","schema":{"description":"Filter by whether chat has risk findings: 'true', 'false', or empty for no filter.","enum":["","true","false"],"type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created after this timestamp (ISO 8601)","in":"query","name":"from","schema":{"description":"Filter chats created after this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter chats created before this timestamp (ISO 8601)","in":"query","name":"to","schema":{"description":"Filter chats created before this timestamp (ISO 8601)","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Number of results per page","in":"query","name":"limit","schema":{"default":50,"description":"Number of results per page","format":"int64","maximum":100,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"Pagination offset","in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","format":"int64","minimum":0,"type":"integer"}},{"allowEmptyValue":true,"description":"Field to sort by","in":"query","name":"sort_by","schema":{"default":"created_at","description":"Field to sort by","enum":["created_at","num_messages","score"],"type":"string"}},{"allowEmptyValue":true,"description":"Sort order","in":"query","name":"sort_order","schema":{"default":"desc","description":"Sort order","enum":["asc","desc"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatsWithResolutionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"listChatsWithResolutions chat","tags":["chat"],"x-speakeasy-name-override":"listChatsWithResolutions","x-speakeasy-react-hook":{"name":"ListChatsWithResolutions","type":"query"}}},"/rpc/chat.load":{"get":{"description":"Load a chat by its ID","operationId":"loadChat","parameters":[{"allowEmptyValue":true,"description":"The ID of the chat","in":"query","name":"id","required":true,"schema":{"description":"The ID of the chat","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chat"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"loadChat chat","tags":["chat"],"x-speakeasy-name-override":"load","x-speakeasy-react-hook":{"name":"LoadChat"}}},"/rpc/chat.submitFeedback":{"post":{"description":"Submit user feedback for a chat (success/failure)","operationId":"submitFeedback","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFeedbackRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"submitFeedback chat","tags":["chat"],"x-speakeasy-name-override":"submitFeedback"}},"/rpc/chatSessions.create":{"post":{"description":"Creates a new chat session token","operationId":"createChatSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"create chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"create"}},"/rpc/chatSessions.revoke":{"delete":{"description":"Revokes an existing chat session token","operationId":"revokeChatSession","parameters":[{"allowEmptyValue":true,"description":"The chat session token to revoke","in":"query","name":"token","required":true,"schema":{"description":"The chat session token to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revoke chatSessions","tags":["chatSessions"],"x-speakeasy-name-override":"revoke"}},"/rpc/collections.attachServer":{"post":{"description":"Attach a server (toolset) to a collection","operationId":"attachServerToCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"attachServer collections","tags":["collections"],"x-speakeasy-name-override":"attachServer"}},"/rpc/collections.create":{"post":{"description":"Create an MCP collection within the organization","operationId":"createCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRequestBody2"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"create collections","tags":["collections"],"x-speakeasy-name-override":"create"}},"/rpc/collections.delete":{"delete":{"description":"Delete an MCP collection","operationId":"deleteCollection","parameters":[{"allowEmptyValue":true,"description":"ID of the collection to delete","in":"query","name":"collection_id","required":true,"schema":{"description":"ID of the collection to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"delete collections","tags":["collections"],"x-speakeasy-name-override":"delete"}},"/rpc/collections.detachServer":{"post":{"description":"Detach a server (toolset) from a collection","operationId":"detachServerFromCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachServerRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"detachServer collections","tags":["collections"],"x-speakeasy-name-override":"detachServer"}},"/rpc/collections.list":{"get":{"description":"List MCP collections in the organization","operationId":"listCollections","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"list collections","tags":["collections"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListCollections"}}},"/rpc/collections.listServers":{"get":{"description":"List published MCP servers from a collection","operationId":"listCollectionServers","parameters":[{"allowEmptyValue":true,"description":"Slug of the collection to serve","in":"query","name":"collection_slug","required":true,"schema":{"description":"Slug of the collection to serve","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listServers collections","tags":["collections"],"x-speakeasy-name-override":"listServers"}},"/rpc/collections.update":{"post":{"description":"Update an MCP collection","operationId":"updateCollection","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPCollection"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"update collections","tags":["collections"],"x-speakeasy-name-override":"update"}},"/rpc/deployments.active":{"get":{"description":"Get the active deployment for a project.","operationId":"getActiveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActiveDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getActiveDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"active","x-speakeasy-react-hook":{"name":"ActiveDeployment"}}},"/rpc/deployments.create":{"post":{"description":"Create a deployment to load tool definitions.","operationId":"createDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","in":"header","name":"Idempotency-Key","required":true,"schema":{"description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateDeployment"}}},"/rpc/deployments.evolve":{"post":{"description":"Create a new deployment with additional or updated tool sources.","operationId":"evolveDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"evolve deployments","tags":["deployments"],"x-speakeasy-name-override":"evolveDeployment","x-speakeasy-react-hook":{"name":"EvolveDeployment"}}},"/rpc/deployments.get":{"get":{"description":"Get a deployment by its ID.","operationId":"getDeployment","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"getById","x-speakeasy-react-hook":{"name":"Deployment"}}},"/rpc/deployments.latest":{"get":{"description":"Get the latest deployment for a project.","operationId":"getLatestDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLatestDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getLatestDeployment deployments","tags":["deployments"],"x-speakeasy-name-override":"latest","x-speakeasy-react-hook":{"name":"LatestDeployment"}}},"/rpc/deployments.list":{"get":{"description":"List all deployments in descending order of creation.","operationId":"listDeployments","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeploymentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listDeployments deployments","tags":["deployments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListDeployments"}}},"/rpc/deployments.logs":{"get":{"description":"Get logs for a deployment.","operationId":"getDeploymentLogs","parameters":[{"allowEmptyValue":true,"description":"The ID of the deployment","in":"query","name":"deployment_id","required":true,"schema":{"description":"The ID of the deployment","type":"string"}},{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeploymentLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getDeploymentLogs deployments","tags":["deployments"],"x-speakeasy-name-override":"logs","x-speakeasy-react-hook":{"name":"DeploymentLogs"}}},"/rpc/deployments.redeploy":{"post":{"description":"Redeploys an existing deployment.","operationId":"redeployDeployment","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeployResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"redeploy deployments","tags":["deployments"],"x-speakeasy-name-override":"redeployDeployment","x-speakeasy-react-hook":{"name":"RedeployDeployment"}}},"/rpc/domain.delete":{"delete":{"description":"Delete a custom domain","operationId":"deleteDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"deleteDomain domains","tags":["domains"],"x-speakeasy-name-override":"deleteDomain","x-speakeasy-react-hook":{"name":"deleteDomain"}}},"/rpc/domain.get":{"get":{"description":"Get the custom domain for an organization","operationId":"getDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getDomain domains","tags":["domains"],"x-speakeasy-name-override":"getDomain","x-speakeasy-react-hook":{"name":"getDomain"}}},"/rpc/domain.listMcpEndpoints":{"get":{"description":"List the MCP endpoints registered under the organization's custom domain across every project. Returns enriched rows that include the parent MCP server and project so callers can preview what a custom-domain deletion would cascade through.","operationId":"listCustomDomainMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCustomDomainMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listMcpEndpoints domains","tags":["domains"],"x-speakeasy-name-override":"listMcpEndpoints","x-speakeasy-react-hook":{"name":"CustomDomainMcpEndpoints"}}},"/rpc/domain.register":{"post":{"description":"Create a custom domain for an organization","operationId":"registerDomain","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createDomain domains","tags":["domains"],"x-speakeasy-name-override":"registerDomain","x-speakeasy-react-hook":{"name":"registerDomain"}}},"/rpc/environments.clone":{"post":{"description":"Clone an environment into a new one. Either copies only the variable names with empty placeholder values, or copies the encrypted values verbatim. Encrypted secret values are never decrypted by the application during the clone operation.","operationId":"cloneEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the source environment to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"cloneEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"clone","x-speakeasy-react-hook":{"name":"CloneEnvironment"}}},"/rpc/environments.create":{"post":{"description":"Create a new environment","operationId":"createEnvironment","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEnvironmentForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateEnvironment"}}},"/rpc/environments.delete":{"delete":{"description":"Delete an environment","operationId":"deleteEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to delete","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteEnvironment"}}},"/rpc/environments.deleteSourceLink":{"delete":{"description":"Delete a link between a source and an environment","operationId":"deleteSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteSourceLink","x-speakeasy-react-hook":{"name":"DeleteSourceEnvironmentLink"}}},"/rpc/environments.deleteToolsetLink":{"delete":{"description":"Delete a link between a toolset and an environment","operationId":"deleteToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"deleteToolsetLink","x-speakeasy-react-hook":{"name":"DeleteToolsetEnvironmentLink"}}},"/rpc/environments.getSourceEnvironment":{"get":{"description":"Get the environment linked to a source","operationId":"getSourceEnvironment","parameters":[{"allowEmptyValue":true,"description":"The kind of source (http or function)","in":"query","name":"source_kind","required":true,"schema":{"description":"The kind of source that can be linked to an environment","enum":["http","function"],"type":"string"}},{"allowEmptyValue":true,"description":"The slug of the source","in":"query","name":"source_slug","required":true,"schema":{"description":"The slug of the source","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSourceEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getBySource","x-speakeasy-react-hook":{"name":"GetSourceEnvironment"}}},"/rpc/environments.getToolsetEnvironment":{"get":{"description":"Get the environment linked to a toolset","operationId":"getToolsetEnvironment","parameters":[{"allowEmptyValue":true,"description":"The ID of the toolset","in":"query","name":"toolset_id","required":true,"schema":{"description":"The ID of the toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getToolsetEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"getByToolset","x-speakeasy-react-hook":{"name":"GetToolsetEnvironment"}}},"/rpc/environments.list":{"get":{"description":"List all environments for an organization","operationId":"listEnvironments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvironmentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listEnvironments environments","tags":["environments"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListEnvironments"}}},"/rpc/environments.setSourceLink":{"put":{"description":"Set (upsert) a link between a source and an environment","operationId":"setSourceEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSourceEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setSourceEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setSourceLink","x-speakeasy-react-hook":{"name":"SetSourceEnvironmentLink"}}},"/rpc/environments.setToolsetLink":{"put":{"description":"Set (upsert) a link between a toolset and an environment","operationId":"setToolsetEnvironmentLink","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetToolsetEnvironmentLinkRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsetEnvironmentLink"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setToolsetEnvironmentLink environments","tags":["environments"],"x-speakeasy-name-override":"setToolsetLink","x-speakeasy-react-hook":{"name":"SetToolsetEnvironmentLink"}}},"/rpc/environments.update":{"post":{"description":"Update an environment","operationId":"updateEnvironment","parameters":[{"allowEmptyValue":true,"description":"The slug of the environment to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEnvironmentRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateEnvironment environments","tags":["environments"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateEnvironment"}}},"/rpc/external.receiveWorkOSWebhook":{"post":{"description":"Receive and enqueue a WorkOS webhook event.","operationId":"receiveWorkOSWebhook","parameters":[{"allowEmptyValue":true,"description":"WorkOS webhook signature header","in":"header","name":"WorkOS-Signature","schema":{"description":"WorkOS webhook signature header","type":"string"}}],"responses":{"204":{"description":"No Content response."}},"summary":"receiveWorkOSWebhook external","tags":["external"],"x-speakeasy-name-override":"receiveWorkOSWebhook","x-speakeasy-react-hook":{"disabled":true}}},"/rpc/hooks.claude":{"post":{"tags":["hooks"],"summary":"claude hooks","description":"Unified endpoint for all Claude Code hook events. Handles SessionStart, PreToolUse, PostToolUse, and PostToolUseFailure.","operationId":"hooks#claude","parameters":[{"name":"Gram-Key","in":"header","description":"Optional API key for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional API key for plugin-driven attribution."}},{"name":"Gram-Project","in":"header","description":"Optional project slug for plugin-driven attribution.","allowEmptyValue":true,"schema":{"type":"string","description":"Optional project slug for plugin-driven attribution."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/hooks.codex":{"post":{"tags":["hooks"],"summary":"codex hooks","description":"Endpoint for Codex hook events. Handles SessionStart, PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, and Stop.","operationId":"hooks#codex","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodexHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.cursor":{"post":{"tags":["hooks"],"summary":"cursor hooks","description":"Endpoint for Cursor hook events. Handles beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, and afterMCPExecution.","operationId":"hooks#cursor","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookPayload"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorHookResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.deleteServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"delete hooksServerNames","description":"Delete a server name display override","operationId":"deleteServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequestBody"}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.listServerNameOverrides":{"get":{"tags":["hooksServerNames"],"summary":"list hooksServerNames","description":"List all server name display overrides for a project","operationId":"listServerNameOverrides","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerNameOverride"}}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/logs":{"post":{"tags":["hooks"],"summary":"logs hooks","description":"Endpoint to receive OTEL logs data from Claude Code. Requires API key authentication.","operationId":"hooks#logs","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELLogsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.otel/v1/metrics":{"post":{"tags":["hooks"],"summary":"metrics hooks","description":"Endpoint to receive OTEL metrics data from Claude Code. Requires API key authentication.","operationId":"hooks#metrics","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTELMetricsPayload"}}}},"responses":{"202":{"description":"Accepted response."},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/hooks.upsertServerNameOverride":{"post":{"tags":["hooksServerNames"],"summary":"upsert hooksServerNames","description":"Create or update a server name display override","operationId":"upsertServerNameOverride","parameters":[{"name":"Gram-Key","in":"header","description":"API Key header","allowEmptyValue":true,"schema":{"type":"string","description":"API Key header"}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequestBody"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerNameOverride"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}]}},"/rpc/instances.get":{"get":{"description":"Load all relevant data for an instance of a toolset and environment","operationId":"getInstance","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to load","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInstanceResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"getInstance instances","tags":["instances"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Instance"}}},"/rpc/integrations.get":{"get":{"tags":["integrations"],"summary":"get integrations","description":"Get a third-party integration by ID or name.","operationId":"integrations#get","parameters":[{"name":"id","in":"query","description":"The ID of the integration to get (refers to a package id).","allowEmptyValue":true,"schema":{"type":"string","description":"The ID of the integration to get (refers to a package id)."}},{"name":"name","in":"query","description":"The name of the integration to get (refers to a package name).","allowEmptyValue":true,"schema":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},{"name":"Gram-Session","in":"header","description":"Session header","allowEmptyValue":true,"schema":{"type":"string","description":"Session header"}},{"name":"Gram-Project","in":"header","description":"project header","allowEmptyValue":true,"schema":{"type":"string","description":"project header"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIntegrationResult"}}}},"400":{"description":"bad_request: request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"unauthorized: unauthorized access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"forbidden: permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found: resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"conflict: resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"unsupported_media: unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"invalid: request contains one or more invalidation fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"unexpected: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"gateway_error: an unexpected error occurred","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}]}},"/rpc/integrations.list":{"get":{"description":"List available third-party integrations.","operationId":"listIntegrations","parameters":[{"allowEmptyValue":true,"description":"Keywords to filter integrations by","in":"query","name":"keywords","schema":{"description":"Keywords to filter integrations by","items":{"maxLength":20,"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntegrationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"list integrations","tags":["integrations"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListIntegrations"}}},"/rpc/keys.create":{"post":{"description":"Create a new api key","operationId":"createAPIKey","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createKey keys","tags":["keys"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateAPIKey"}}},"/rpc/keys.list":{"get":{"description":"List all api keys for an organization","operationId":"listAPIKeys","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listKeys keys","tags":["keys"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListAPIKeys"}}},"/rpc/keys.revoke":{"delete":{"description":"Revoke a api key","operationId":"revokeAPIKey","parameters":[{"allowEmptyValue":true,"description":"The ID of the key to revoke","in":"query","name":"id","required":true,"schema":{"description":"The ID of the key to revoke","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeKey keys","tags":["keys"],"x-speakeasy-name-override":"revokeById","x-speakeasy-react-hook":{"name":"RevokeAPIKey"}}},"/rpc/keys.verify":{"get":{"description":"Verify an api key","operationId":"validateAPIKey","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"verifyKey keys","tags":["keys"],"x-speakeasy-name-override":"validate","x-speakeasy-react-hook":{"name":"ValidateAPIKey"}}},"/rpc/mcpEndpoints.checkSlugAvailability":{"get":{"description":"Check whether an MCP endpoint slug is available. The uniqueness scope depends on whether a custom_domain_id is provided: platform-domain slugs are checked across all platform-domain endpoints (custom_domain_id IS NULL); custom-domain slugs are checked within the (custom_domain_id, slug) pair. Returns true when the slug is free.","operationId":"checkMcpEndpointSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","in":"query","name":"custom_domain_id","schema":{"description":"Optional custom domain ID. Omit to check platform-domain slug availability.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMcpEndpointSlugAvailability mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"checkSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMcpEndpointSlugAvailability"}}},"/rpc/mcpEndpoints.create":{"post":{"description":"Create a new MCP endpoint for an MCP server","operationId":"createMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpEndpoint"}}},"/rpc/mcpEndpoints.delete":{"delete":{"description":"Delete an MCP endpoint","operationId":"deleteMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP endpoint to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpEndpoint"}}},"/rpc/mcpEndpoints.get":{"get":{"description":"Get an MCP endpoint by id or by (custom_domain_id, slug). Provide either id, or slug with an optional custom_domain_id — not both.","operationId":"getMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP endpoint","in":"query","name":"id","schema":{"description":"The ID of the MCP endpoint","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","in":"query","name":"custom_domain_id","schema":{"description":"The ID of the custom domain the endpoint slug is registered under. Omit to look up a platform-domain endpoint.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug to look up","in":"query","name":"slug","schema":{"description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","maxLength":128,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpEndpoint"}}},"/rpc/mcpEndpoints.list":{"get":{"description":"List MCP endpoints for a project. Optionally filter to only those associated with a specific MCP server.","operationId":"listMcpEndpoints","parameters":[{"allowEmptyValue":true,"description":"Optional filter: only return endpoints associated with this MCP server.","in":"query","name":"mcp_server_id","schema":{"description":"Optional filter: only return endpoints associated with this MCP server.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpEndpointsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpEndpoints mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpEndpoints"}}},"/rpc/mcpEndpoints.update":{"post":{"description":"Update an MCP endpoint. This is a full-record replace: fields omitted from the request become null on the stored record. The id, mcp_server_id, and slug fields are required.","operationId":"updateMcpEndpoint","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpEndpointForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpEndpoint mcpEndpoints","tags":["mcpEndpoints"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpEndpoint"}}},"/rpc/mcpMetadata.export":{"post":{"description":"Export MCP server details as JSON for documentation and integration purposes.","operationId":"exportMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpExport"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"exportMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"export","x-speakeasy-react-hook":{"name":"ExportMcpMetadata"}}},"/rpc/mcpMetadata.get":{"get":{"description":"Fetch the metadata that powers the MCP install page.","operationId":"getMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset associated with this install page metadata","in":"query","name":"toolset_slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMcpMetadataResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpMetadata"}}},"/rpc/mcpMetadata.set":{"post":{"description":"Create or update the metadata that powers the MCP install page.","operationId":"setMcpMetadata","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMcpMetadataRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpMetadata"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setMcpMetadata mcpMetadata","tags":["mcpMetadata"],"x-speakeasy-name-override":"set"}},"/rpc/mcpRegistries.clearCache":{"delete":{"description":"Clear the registry cache for a specific registry (admin only)","operationId":"clearMCPRegistryCache","parameters":[{"allowEmptyValue":true,"description":"The registry to clear cache for","in":"query","name":"registry_id","required":true,"schema":{"description":"The registry to clear cache for","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"clearCache mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"clearCache"}},"/rpc/mcpRegistries.getServerDetails":{"get":{"description":"Get detailed information about an MCP server including remotes","operationId":"getMCPServerDetails","parameters":[{"allowEmptyValue":true,"description":"ID of the registry","in":"query","name":"registry_id","required":true,"schema":{"description":"ID of the registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Server specifier (e.g., 'io.github.user/server')","in":"query","name":"server_specifier","required":true,"schema":{"description":"Server specifier (e.g., 'io.github.user/server')","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMCPServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServerDetails mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"getServerDetails"}},"/rpc/mcpRegistries.listCatalog":{"get":{"description":"List available MCP servers from configured registries","operationId":"listMCPCatalog","parameters":[{"allowEmptyValue":true,"description":"Filter to a specific registry","in":"query","name":"registry_id","schema":{"description":"Filter to a specific registry","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Search query to filter servers by name","in":"query","name":"search","schema":{"description":"Search query to filter servers by name","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor","in":"query","name":"cursor","schema":{"description":"Pagination cursor","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCatalogResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listCatalog mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listCatalog","x-speakeasy-react-hook":{"name":"ListMCPCatalog"}}},"/rpc/mcpRegistries.listRegistries":{"get":{"description":"List all MCP registries (admin only)","operationId":"listMCPRegistries","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRegistriesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRegistries mcpRegistries","tags":["mcpRegistries"],"x-speakeasy-name-override":"listRegistries","x-speakeasy-react-hook":{"name":"ListMCPRegistries"}}},"/rpc/mcpServers.create":{"post":{"description":"Create a new MCP server","operationId":"createMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateMcpServer"}}},"/rpc/mcpServers.delete":{"delete":{"description":"Delete an MCP server","operationId":"deleteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the MCP server to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteMcpServer"}}},"/rpc/mcpServers.get":{"get":{"description":"Get an MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"GetMcpServer"}}},"/rpc/mcpServers.list":{"get":{"description":"List MCP servers for a project. Accepts optional remote_mcp_server_id or toolset_id filters to scope the result to a single backend; at most one filter may be supplied since the two backends are mutually exclusive.","operationId":"listMcpServers","parameters":[{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this remote MCP server","in":"query","name":"remote_mcp_server_id","schema":{"description":"Filter to MCP servers backed by this remote MCP server","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to MCP servers backed by this toolset","in":"query","name":"toolset_id","schema":{"description":"Filter to MCP servers backed by this toolset","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMcpServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listMcpServers mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"McpServers"}}},"/rpc/mcpServers.update":{"post":{"description":"Update an MCP server. This is a full-record replace for the optional UUID references: fields omitted from the request become null on the stored record. name is an exception — omitting it leaves the existing display name unchanged, while providing it requires a non-empty value and recomputes the server-side slug. The id and visibility fields are required; exactly one of remote_mcp_server_id or toolset_id must be provided.","operationId":"updateMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMcpServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateMcpServer mcpServers","tags":["mcpServers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateMcpServer"}}},"/rpc/organizations.createPortalSession":{"post":{"description":"Create a webhook portal session.","operationId":"createPortalSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortalSessionResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createPortalSession organizations","tags":["organizations"],"x-speakeasy-name-override":"createPortalSession","x-speakeasy-react-hook":{"name":"CreatePortalSession"}}},"/rpc/organizations.disableWebhooks":{"post":{"description":"Disable webhooks for the active organization.","operationId":"disableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"disableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"disableWebhooks","x-speakeasy-react-hook":{"name":"DisableWebhooks"}}},"/rpc/organizations.enableWebhooks":{"post":{"description":"Enable webhooks for the active organization.","operationId":"enableWebhooks","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"enableWebhooks organizations","tags":["organizations"],"x-speakeasy-name-override":"enableWebhooks","x-speakeasy-react-hook":{"name":"EnableWebhooks"}}},"/rpc/organizations.get":{"get":{"description":"Get the active organization from the session.","operationId":"getOrganization","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"get organizations","tags":["organizations"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Organization"}}},"/rpc/organizations.listInvites":{"get":{"description":"List pending WorkOS invitations for the active organization.","operationId":"listInvites","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvitesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listInvites organizations","tags":["organizations"],"x-speakeasy-name-override":"listInvites","x-speakeasy-react-hook":{"name":"ListInvites"}}},"/rpc/organizations.listUsers":{"get":{"description":"List users in the active organization from Gram organization_user_relationships.","operationId":"listOrganizationUsers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"listUsers organizations","tags":["organizations"],"x-speakeasy-name-override":"listUsers","x-speakeasy-react-hook":{"name":"ListOrganizationUsers"}}},"/rpc/organizations.removeUser":{"delete":{"description":"Remove a user from the active organization in Gram and delete their WorkOS organization membership.","operationId":"removeOrganizationUser","parameters":[{"allowEmptyValue":true,"description":"Gram user ID to remove.","in":"query","name":"user_id","required":true,"schema":{"description":"Gram user ID to remove.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"removeUser organizations","tags":["organizations"],"x-speakeasy-name-override":"removeUser","x-speakeasy-react-hook":{"name":"RemoveOrganizationUser"}}},"/rpc/organizations.revokeInvite":{"delete":{"description":"Revoke a pending WorkOS invitation.","operationId":"revokeInvite","parameters":[{"allowEmptyValue":true,"description":"WorkOS invitation ID.","in":"query","name":"invitation_id","required":true,"schema":{"description":"WorkOS invitation ID.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"revokeInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"revokeInvite","x-speakeasy-react-hook":{"name":"RevokeInvite"}}},"/rpc/organizations.sendInvite":{"post":{"description":"Send a WorkOS invitation for the active organization.","operationId":"sendInvite","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendInviteRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"sendInvite organizations","tags":["organizations"],"x-speakeasy-name-override":"sendInvite","x-speakeasy-react-hook":{"name":"SendInvite"}}},"/rpc/organizations.updateInviteRole":{"put":{"description":"Change the role assigned to a pending WorkOS invitation.","operationId":"updateInviteRole","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteRoleRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitation"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"updateInviteRole organizations","tags":["organizations"],"x-speakeasy-name-override":"updateInviteRole","x-speakeasy-react-hook":{"name":"UpdateInviteRole"}}},"/rpc/otelForwarding.deleteConfig":{"post":{"description":"Delete the org-wide OTEL forwarding config.","operationId":"deleteOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"deleteConfig","x-speakeasy-react-hook":{"name":"DeleteOtelForwardingConfig"}}},"/rpc/otelForwarding.getConfig":{"get":{"description":"Get the org-wide OTEL forwarding config. Returns an empty config (enabled=false, no URL) when none is set.","operationId":"getOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"getConfig","x-speakeasy-react-hook":{"name":"OtelForwardingConfig"}}},"/rpc/otelForwarding.upsertConfig":{"post":{"description":"Create or update the org-wide OTEL forwarding config. Replaces the full header set on each call.","operationId":"upsertOtelForwardingConfig","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertConfigRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtelForwardingConfig"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"upsertConfig otelForwarding","tags":["otelForwarding"],"x-speakeasy-name-override":"upsertConfig","x-speakeasy-react-hook":{"name":"UpsertOtelForwardingConfig"}}},"/rpc/packages.create":{"post":{"description":"Create a new package for a project.","operationId":"createPackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPackage packages","tags":["packages"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreatePackage"}}},"/rpc/packages.list":{"get":{"description":"List all packages for a project.","operationId":"listPackages","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPackagesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPackages packages","tags":["packages"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListPackages"}}},"/rpc/packages.listVersions":{"get":{"description":"List published versions of a package.","operationId":"listVersions","parameters":[{"allowEmptyValue":true,"description":"The name of the package","in":"query","name":"name","required":true,"schema":{"description":"The name of the package","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVersionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listVersions packages","tags":["packages"],"x-speakeasy-name-override":"listVersions","x-speakeasy-react-hook":{"name":"ListVersions"}}},"/rpc/packages.publish":{"post":{"description":"Publish a new version of a package.","operationId":"publish","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPackageResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publish packages","tags":["packages"],"x-speakeasy-name-override":"publish","x-speakeasy-react-hook":{"name":"PublishPackage"}}},"/rpc/packages.update":{"put":{"description":"Update package details.","operationId":"updatePackage","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackageResult"}}},"description":"OK response."},"304":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotModified"}}},"description":"not_modified: Not Modified response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePackage packages","tags":["packages"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdatePackage"}}},"/rpc/plugins.addPluginServer":{"post":{"description":"Add an MCP server to a plugin.","operationId":"addPluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPluginServerForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"addPluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"addPluginServer","x-speakeasy-react-hook":{"name":"AddPluginServer"}}},"/rpc/plugins.createPlugin":{"post":{"description":"Create a new plugin.","operationId":"createPlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePluginForm"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"Created response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"createPlugin","x-speakeasy-react-hook":{"name":"CreatePlugin"}}},"/rpc/plugins.deletePlugin":{"delete":{"description":"Delete a plugin.","operationId":"deletePlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deletePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"deletePlugin","x-speakeasy-react-hook":{"name":"DeletePlugin"}}},"/rpc/plugins.downloadCodexInstallScript":{"get":{"description":"Download a bash install script that registers the Codex observability marketplace and pre-approves all hook events. Requires a published marketplace.","operationId":"downloadCodexInstallScript","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"text/x-shellscript":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadCodexInstallScript plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadCodexInstallScript"}},"/rpc/plugins.downloadObservabilityPlugin":{"get":{"description":"Download a ZIP of the per-org observability plugin (Gram hooks). Mints a fresh hooks-scoped API key on each download and embeds it in the plugin's hook script.","operationId":"downloadObservabilityPlugin","parameters":[{"allowEmptyValue":true,"description":"Target platform.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadObservabilityPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadObservabilityPlugin"}},"/rpc/plugins.downloadPluginPackage":{"get":{"description":"Download a ZIP of a single plugin package for direct installation.","operationId":"downloadPluginPackage","parameters":[{"allowEmptyValue":true,"description":"The plugin to download.","in":"query","name":"plugin_id","required":true,"schema":{"description":"The plugin to download.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Target platform to download plugins for.","in":"query","name":"platform","required":true,"schema":{"description":"Target platform to download plugins for.","enum":["claude","cursor","codex"],"type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK response.","headers":{"Content-Disposition":{"schema":{"type":"string"}},"Content-Type":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"downloadPluginPackage plugins","tags":["plugins"],"x-speakeasy-name-override":"downloadPluginPackage"}},"/rpc/plugins.getPlugin":{"get":{"description":"Get a plugin with its servers and assignments.","operationId":"getPlugin","parameters":[{"allowEmptyValue":true,"in":"query","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"getPlugin","x-speakeasy-react-hook":{"name":"Plugin"}}},"/rpc/plugins.getPublishStatus":{"get":{"description":"Check whether GitHub publishing is configured and connected for this project.","operationId":"getPublishStatus","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStatusResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getPublishStatus plugins","tags":["plugins"],"x-speakeasy-name-override":"getPublishStatus","x-speakeasy-react-hook":{"name":"PublishStatus"}}},"/rpc/plugins.listPlugins":{"get":{"description":"List all plugins for the current project.","operationId":"listPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"listPlugins","x-speakeasy-react-hook":{"name":"Plugins"}}},"/rpc/plugins.publishPlugins":{"post":{"description":"Generate and publish all plugin packages to a GitHub repository.","operationId":"publishPlugins","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPluginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"publishPlugins plugins","tags":["plugins"],"x-speakeasy-name-override":"publishPlugins","x-speakeasy-react-hook":{"name":"PublishPlugins"}}},"/rpc/plugins.removePluginServer":{"delete":{"description":"Remove a server from a plugin.","operationId":"removePluginServer","parameters":[{"allowEmptyValue":true,"description":"The plugin server ID to remove.","in":"query","name":"id","required":true,"schema":{"description":"The plugin server ID to remove.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"plugin_id","required":true,"schema":{"format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"removePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"removePluginServer","x-speakeasy-react-hook":{"name":"RemovePluginServer"}}},"/rpc/plugins.setPluginAssignments":{"put":{"description":"Replace all assignments for a plugin with the given list of principal URNs.","operationId":"setPluginAssignments","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPluginAssignmentsResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setPluginAssignments plugins","tags":["plugins"],"x-speakeasy-name-override":"setPluginAssignments","x-speakeasy-react-hook":{"name":"SetPluginAssignments"}}},"/rpc/plugins.updatePlugin":{"put":{"description":"Update plugin metadata.","operationId":"updatePlugin","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePlugin plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePlugin","x-speakeasy-react-hook":{"name":"UpdatePlugin"}}},"/rpc/plugins.updatePluginServer":{"put":{"description":"Update a server's configuration within a plugin.","operationId":"updatePluginServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updatePluginServer plugins","tags":["plugins"],"x-speakeasy-name-override":"updatePluginServer","x-speakeasy-react-hook":{"name":"UpdatePluginServer"}}},"/rpc/productFeatures.get":{"get":{"description":"Get the current state of all product feature flags.","operationId":"getProductFeatures","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductFeaturesResponseBody"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getProductFeatures features","tags":["features"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"ProductFeatures"}}},"/rpc/productFeatures.set":{"post":{"description":"Enable or disable an organization feature flag.","operationId":"setProductFeature","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProductFeatureRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"setProductFeature features","tags":["features"],"x-speakeasy-name-override":"set"}},"/rpc/projects.create":{"post":{"description":"Create a new project.","operationId":"createProject","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"createProject projects","tags":["projects"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateProject"}}},"/rpc/projects.delete":{"delete":{"description":"Delete a project by its ID","operationId":"deleteProject","parameters":[{"allowEmptyValue":true,"description":"The id of the project to delete","in":"query","name":"id","required":true,"schema":{"description":"The id of the project to delete","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"deleteProject projects","tags":["projects"],"x-speakeasy-name-override":"deleteById","x-speakeasy-react-hook":{"name":"DeleteProject"}}},"/rpc/projects.get":{"get":{"description":"Get project details by slug.","operationId":"getProject","parameters":[{"allowEmptyValue":true,"description":"The slug of the project to get","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"getProject projects","tags":["projects"],"x-speakeasy-name-override":"read","x-speakeasy-react-hook":{"name":"Project"}}},"/rpc/projects.list":{"get":{"description":"List all projects for an organization.","operationId":"listProjects","parameters":[{"allowEmptyValue":true,"description":"The ID of the organization to list projects for","in":"query","name":"organization_id","required":true,"schema":{"description":"The ID of the organization to list projects for","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]},{"session_header_Gram-Session":[]}],"summary":"listProjects projects","tags":["projects"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListProjects"}}},"/rpc/projects.listAllowedOrigins":{"get":{"description":"List allowed origins for a project.","operationId":"listAllowedOrigins","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAllowedOriginsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAllowedOrigins projects","tags":["projects"],"x-speakeasy-name-override":"listAllowedOrigins","x-speakeasy-react-hook":{"name":"ListAllowedOrigins"}}},"/rpc/projects.setLogo":{"post":{"description":"Uploads a logo for a project.","operationId":"setProjectLogo","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignedAssetURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetProjectLogoResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"setLogo projects","tags":["projects"],"x-speakeasy-name-override":"setLogo","x-speakeasy-react-hook":{"name":"setProjectLogo"}}},"/rpc/projects.setOrganizationWhitelist":{"post":{"description":"Set organization whitelist status (admin only - requires speakeasy-team API key)","operationId":"setOrganizationWhitelist","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrganizationWhitelistRequestBody"}}},"required":true},"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[]}],"summary":"setOrganizationWhitelist projects","tags":["projects"],"x-speakeasy-name-override":"setOrganizationWhitelist"}},"/rpc/projects.upsertAllowedOrigin":{"post":{"description":"Upsert an allowed origin for a project.","operationId":"upsertAllowedOrigin","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAllowedOriginResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"upsertAllowedOrigin projects","tags":["projects"],"x-speakeasy-name-override":"upsertAllowedOrigin","x-speakeasy-react-hook":{"name":"UpsertAllowedOrigin"}}},"/rpc/remoteMcp.createServer":{"post":{"description":"Create a new remote MCP server","operationId":"createRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"createServer","x-speakeasy-react-hook":{"name":"CreateRemoteMcpServer"}}},"/rpc/remoteMcp.deleteServer":{"delete":{"description":"Delete a remote MCP server","operationId":"deleteRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server to delete","in":"query","name":"id","required":true,"schema":{"description":"The ID of the remote MCP server to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"deleteServer","x-speakeasy-react-hook":{"name":"DeleteRemoteMcpServer"}}},"/rpc/remoteMcp.getServer":{"get":{"description":"Get a remote MCP server by ID or slug. Exactly one of id or slug must be provided.","operationId":"getRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"The ID of the remote MCP server. Mutually exclusive with slug.","in":"query","name":"id","schema":{"description":"The ID of the remote MCP server. Mutually exclusive with slug.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The slug of the remote MCP server. Mutually exclusive with id.","in":"query","name":"slug","schema":{"description":"The slug of the remote MCP server. Mutually exclusive with id.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"getServer","x-speakeasy-react-hook":{"name":"GetRemoteMcpServer"}}},"/rpc/remoteMcp.listServers":{"get":{"description":"List all remote MCP servers for a project","operationId":"listRemoteMcpServers","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listServers remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"listServers","x-speakeasy-react-hook":{"name":"RemoteMcpServers"}}},"/rpc/remoteMcp.updateServer":{"post":{"description":"Update a remote MCP server","operationId":"updateRemoteMcpServer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateServer remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"updateServer","x-speakeasy-react-hook":{"name":"UpdateRemoteMcpServer"}}},"/rpc/remoteMcp.verifyURL":{"post":{"description":"Probe a candidate remote MCP server URL by issuing an MCP initialize request and reporting the outcome. Used to give users a reachability signal before they save a new or updated remote MCP server. Treats reachable-but-401/403 responses as verified — auth verification is intentionally out of scope.","operationId":"verifyRemoteMcpURL","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyURLResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"verifyURL remoteMcp","tags":["remoteMcp"],"x-speakeasy-name-override":"verifyURL","x-speakeasy-react-hook":{"name":"VerifyRemoteMcpURL"}}},"/rpc/remoteSessionClients.cloneClientFromOAuthProxyProvider":{"post":{"description":"Platform-admin-only. Clone the client_id / client_secret from an existing oauth_proxy_provider into a new remote_session_client paired with the supplied issuers. The upstream secret stays server-side: it is read from the proxy provider's stored secrets, re-encrypted, and persisted on the remote_session_client row without ever crossing the wire.","operationId":"cloneClientFromOAuthProxyProvider","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneClientFromOAuthProxyProviderForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneClientFromOAuthProxyProvider remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"cloneClientFromOAuthProxyProvider","x-speakeasy-react-hook":{"name":"CloneClientFromOAuthProxyProvider"}}},"/rpc/remoteSessionClients.create":{"post":{"description":"Register a remote_session_client by supplying a client_id and optional client_secret obtained out-of-band from the upstream issuer.","operationId":"createRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionClient"}}},"/rpc/remoteSessionClients.delete":{"delete":{"description":"Soft-delete a remote_session_client. Cascades to remote_sessions rows pointing at this client; affected principals are forced to re-authenticate.","operationId":"deleteRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionClient"}}},"/rpc/remoteSessionClients.get":{"get":{"description":"Get a remote_session_client by id.","operationId":"getRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"The remote_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionClient"}}},"/rpc/remoteSessionClients.list":{"get":{"description":"List remote_session_clients in the caller's project.","operationId":"listRemoteSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"remote_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter to clients paired with this user_session_issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients paired with this user_session_issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionClients remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionClients"}}},"/rpc/remoteSessionClients.update":{"post":{"description":"Rotate the client_secret or change the user_session_issuer_id linkage on an existing remote_session_client.","operationId":"updateRemoteSessionClient","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionClientForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionClient remoteSessionClients","tags":["remoteSessionClients"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionClient"}}},"/rpc/remoteSessionIssuers.create":{"post":{"description":"Create a new remote_session_issuer.","operationId":"createRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.delete":{"delete":{"description":"Soft-delete a remote_session_issuer. Blocked if any remote_session_clients still reference it.","operationId":"deleteRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.discover":{"post":{"description":"Hit an upstream issuer's RFC 8414 .well-known/oauth-authorization-server document and return a draft suitable for createRemoteSessionIssuer. No persistence.","operationId":"discoverRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRemoteSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuerDraft"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"discoverRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"discover","x-speakeasy-react-hook":{"name":"DiscoverRemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.get":{"get":{"description":"Get a remote_session_issuer by id or by slug. Provide exactly one.","operationId":"getRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The remote_session_issuer id.","in":"query","name":"id","schema":{"description":"The remote_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The remote_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The remote_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RemoteSessionIssuer"}}},"/rpc/remoteSessionIssuers.list":{"get":{"description":"List remote_session_issuers in the caller's project.","operationId":"listRemoteSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessionIssuers remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessionIssuers"}}},"/rpc/remoteSessionIssuers.update":{"post":{"description":"Update fields on an existing remote_session_issuer.","operationId":"updateRemoteSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRemoteSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateRemoteSessionIssuer remoteSessionIssuers","tags":["remoteSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateRemoteSessionIssuer"}}},"/rpc/remoteSessions.list":{"get":{"description":"List remote_sessions in the caller's project. access_token_encrypted and refresh_token_encrypted are never returned — only metadata (access_expires_at, refresh_expires_at, scopes).","operationId":"listRemoteSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by remote_session_client id.","in":"query","name":"remote_session_client_id","schema":{"description":"Filter by remote_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor.","in":"query","name":"cursor","schema":{"description":"Pagination cursor.","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRemoteSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listRemoteSessions remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"RemoteSessions"}}},"/rpc/remoteSessions.revoke":{"post":{"description":"Drop a remote_session row. The next /mcp call by that principal triggers a fresh authn challenge.","operationId":"revokeRemoteSession","parameters":[{"allowEmptyValue":true,"description":"The remote_session id.","in":"query","name":"id","required":true,"schema":{"description":"The remote_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeRemoteSession remoteSessions","tags":["remoteSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeRemoteSession"}}},"/rpc/resources.list":{"get":{"description":"List all resources for a project","operationId":"listResources","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of resources to return per page","in":"query","name":"limit","schema":{"description":"The number of resources to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listResources resources","tags":["resources"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListResources"}}},"/rpc/risk.approvals.create":{"post":{"description":"Approve a shadow-MCP server so the named policy stops blocking calls to it. `match` is the same opaque server identifier surfaced in `RiskResult.match` — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix.","operationId":"approveShadowMCP","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveShadowMCPRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowMCPApproval"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"approveShadowMCP risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskApproveShadowMCP","type":"mutation"}}},"/rpc/risk.approvals.delete":{"delete":{"description":"Remove a previously-approved shadow-MCP server for a policy.","operationId":"revokeShadowMCPApproval","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The MCP server identifier to revoke — exactly the value used to approve.","in":"query","name":"match","required":true,"schema":{"description":"The MCP server identifier to revoke — exactly the value used to approve.","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"revokeShadowMCPApproval risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"delete"}},"/rpc/risk.approvals.list":{"get":{"description":"List shadow-MCP approvals (URL- or command-keyed) for a policy. Temporary Redis-backed storage; will move to a dedicated table once the feature graduates.","operationId":"listShadowMCPApprovals","parameters":[{"allowEmptyValue":true,"description":"The risk policy ID.","in":"query","name":"policy_id","required":true,"schema":{"description":"The risk policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListShadowMCPApprovalsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listShadowMCPApprovals risk","tags":["risk"],"x-speakeasy-group":"risk.approvals","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListShadowMCPApprovals"}}},"/rpc/risk.capabilities.get":{"get":{"description":"Get server-side risk analysis capabilities for the current project.","operationId":"getRiskCapabilities","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCapabilitiesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskCapabilities risk","tags":["risk"],"x-speakeasy-group":"risk.capabilities","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskCapabilities"}}},"/rpc/risk.categories":{"get":{"description":"Return the canonical risk category definitions: metadata (label/description/icon) plus the classification (source / rule_id list / rule_id prefix) used to bucket findings. Dashboards and CLIs should call this instead of maintaining their own copy of the mapping.","operationId":"listRiskCategories","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCategoriesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskCategories risk","tags":["risk"],"x-speakeasy-group":"risk.categories","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskCategories"}}},"/rpc/risk.overview.get":{"get":{"description":"Get risk overview metrics and trend data for the current project.","operationId":"getRiskOverview","parameters":[{"allowEmptyValue":true,"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","in":"query","name":"from","schema":{"description":"Inclusive start of the overview window. Defaults to the start of the 7-day calendar window ending at to.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the overview window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the overview window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskOverview risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"RiskOverview"}}},"/rpc/risk.overview.rules":{"get":{"description":"Get per-rule_id finding counts for a category within a time window. Powers the per-category drill-down chart on /risk-overview.","operationId":"getRiskRuleBreakdown","parameters":[{"allowEmptyValue":true,"description":"Required category key to break down by rule_id (e.g. secrets, pii).","in":"query","name":"category","required":true,"schema":{"description":"Required category key to break down by rule_id (e.g. secrets, pii).","type":"string"}},{"allowEmptyValue":true,"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","in":"query","name":"from","schema":{"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskRuleBreakdownResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskRuleBreakdown risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"rules","x-speakeasy-react-hook":{"name":"RiskRuleBreakdown"}}},"/rpc/risk.overview.userBreakdown":{"get":{"description":"Per-user breakdowns of findings by category and by rule_id within a time window. Powers the user drill-down on /risk-overview.","operationId":"getRiskUserBreakdown","parameters":[{"allowEmptyValue":true,"description":"External user identifier to scope the breakdown to.","in":"query","name":"external_user_id","required":true,"schema":{"description":"External user identifier to scope the breakdown to.","type":"string"}},{"allowEmptyValue":true,"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","in":"query","name":"from","schema":{"description":"Inclusive start of the window. Defaults to the same 7-day window as the overview.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Exclusive end of the window. Defaults to now.","in":"query","name":"to","schema":{"description":"Exclusive end of the window. Defaults to now.","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskUserBreakdownResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskUserBreakdown risk","tags":["risk"],"x-speakeasy-group":"risk.overview","x-speakeasy-name-override":"userBreakdown","x-speakeasy-react-hook":{"name":"RiskUserBreakdown"}}},"/rpc/risk.policies.create":{"post":{"description":"Create a new risk analysis policy for the current project.","operationId":"createRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"RiskCreatePolicy","type":"mutation"}}},"/rpc/risk.policies.delete":{"delete":{"description":"Delete a risk analysis policy.","operationId":"deleteRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"delete"}},"/rpc/risk.policies.get":{"get":{"description":"Get a risk analysis policy by ID.","operationId":"getRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"get"}},"/rpc/risk.policies.list":{"get":{"description":"List all risk analysis policies for the current project.","operationId":"listRiskPolicies","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskPoliciesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskPolicies risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListPolicies"}}},"/rpc/risk.policies.status":{"get":{"description":"Get the analysis status of a risk policy including progress and workflow state.","operationId":"getRiskPolicyStatus","parameters":[{"allowEmptyValue":true,"description":"The policy ID.","in":"query","name":"id","required":true,"schema":{"description":"The policy ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicyStatus"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getRiskPolicyStatus risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"status"}},"/rpc/risk.policies.trigger":{"post":{"description":"Manually trigger risk analysis for a policy, starting or signaling the drain workflow. Defaults to the most recent 100 unanalyzed messages; pass `limit=0` to backfill every unanalyzed message.","operationId":"triggerRiskAnalysis","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerRiskAnalysisRequestBody"}}},"required":true},"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"triggerRiskAnalysis risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"trigger"}},"/rpc/risk.policies.update":{"put":{"description":"Update a risk analysis policy.","operationId":"updateRiskPolicy","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRiskPolicyRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPolicy"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateRiskPolicy risk","tags":["risk"],"x-speakeasy-group":"risk.policies","x-speakeasy-name-override":"update"}},"/rpc/risk.results.byChat":{"get":{"description":"List risk results grouped by chat session for the current project.","operationId":"listRiskResultsByChat","parameters":[{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsByChatResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsByChat risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"byChat","x-speakeasy-react-hook":{"name":"RiskListResultsByChat"}}},"/rpc/risk.results.list":{"get":{"description":"List risk analysis results for the current project.","operationId":"listRiskResults","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional rule category key to filter by (e.g. secrets, pii, financial).","in":"query","name":"category","schema":{"description":"Optional rule category key to filter by (e.g. secrets, pii, financial).","type":"string"}},{"allowEmptyValue":true,"description":"Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).","in":"query","name":"rule_id","schema":{"description":"Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).","type":"string"}},{"allowEmptyValue":true,"description":"If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.","in":"query","name":"unique_match","schema":{"description":"If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.","type":"boolean"}},{"allowEmptyValue":true,"description":"Filter results to messages created at or after this timestamp (ISO 8601).","in":"query","name":"from","schema":{"description":"Filter results to messages created at or after this timestamp (ISO 8601).","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter results to messages created strictly before this timestamp (ISO 8601).","in":"query","name":"to","schema":{"description":"Filter results to messages created strictly before this timestamp (ISO 8601).","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResults risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"RiskListResults"}}},"/rpc/risk.results.listForAgent":{"get":{"description":"List risk analysis results with the `match` field redacted to an opaque length+sha256-prefix fingerprint. Matches the payload and pagination semantics of listRiskResults. Designed for AI assistant / MCP consumption so secret content (gitleaks captures, presidio entities, prompt-injection payloads) never reaches the model context. For shadow_mcp findings the `match` value — a non-sensitive server URL or command identifier — is passed through verbatim.","operationId":"listRiskResultsForAgent","parameters":[{"allowEmptyValue":true,"description":"Optional policy ID to filter by.","in":"query","name":"policy_id","schema":{"description":"Optional policy ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional chat ID to filter by.","in":"query","name":"chat_id","schema":{"description":"Optional chat ID to filter by.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Optional rule category key to filter by (e.g. secrets, pii, financial).","in":"query","name":"category","schema":{"description":"Optional rule category key to filter by (e.g. secrets, pii, financial).","type":"string"}},{"allowEmptyValue":true,"description":"Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).","in":"query","name":"rule_id","schema":{"description":"Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules).","type":"string"}},{"allowEmptyValue":true,"description":"If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.","in":"query","name":"unique_match","schema":{"description":"If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body.","type":"boolean"}},{"allowEmptyValue":true,"description":"Filter results to messages created at or after this timestamp (ISO 8601).","in":"query","name":"from","schema":{"description":"Filter results to messages created at or after this timestamp (ISO 8601).","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Filter results to messages created strictly before this timestamp (ISO 8601).","in":"query","name":"to","schema":{"description":"Filter results to messages created strictly before this timestamp (ISO 8601).","format":"date-time","type":"string"}},{"allowEmptyValue":true,"description":"Cursor to fetch the next page of results.","in":"query","name":"cursor","schema":{"description":"Cursor to fetch the next page of results.","type":"string"}},{"allowEmptyValue":true,"description":"Maximum number of results to return per page.","in":"query","name":"limit","schema":{"description":"Maximum number of results to return per page.","format":"int64","maximum":200,"minimum":1,"type":"integer"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRiskResultsForAgentResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listRiskResultsForAgent risk","tags":["risk"],"x-speakeasy-group":"risk.results","x-speakeasy-name-override":"listForAgent","x-speakeasy-react-hook":{"name":"RiskListResultsForAgent"}}},"/rpc/slack-apps.configure":{"post":{"description":"Store Slack credentials (client ID, client secret, signing secret) for an app.","operationId":"configureSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"configureSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"configureSlackApp","x-speakeasy-react-hook":{"name":"configureSlackApp"}}},"/rpc/slack-apps.create":{"post":{"description":"Create a new Slack app and generate its manifest.","operationId":"createSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"createSlackApp","x-speakeasy-react-hook":{"name":"createSlackApp"}}},"/rpc/slack-apps.delete":{"delete":{"description":"Soft-delete a Slack app.","operationId":"deleteSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"deleteSlackApp","x-speakeasy-react-hook":{"name":"deleteSlackApp"}}},"/rpc/slack-apps.get":{"get":{"description":"Get details of a specific Slack app.","operationId":"getSlackApp","parameters":[{"allowEmptyValue":true,"description":"The Slack app ID","in":"query","name":"id","required":true,"schema":{"description":"The Slack app ID","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"getSlackApp","x-speakeasy-react-hook":{"name":"getSlackApp"}}},"/rpc/slack-apps.list":{"get":{"description":"List Slack apps for a project.","operationId":"listSlackApps","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSlackAppsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listSlackApps slack","tags":["slack"],"x-speakeasy-name-override":"listSlackApps","x-speakeasy-react-hook":{"name":"listSlackApps"}}},"/rpc/slack-apps.update":{"put":{"description":"Update a Slack app's settings.","operationId":"updateSlackApp","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSlackAppRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackAppResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateSlackApp slack","tags":["slack"],"x-speakeasy-name-override":"updateSlackApp","x-speakeasy-react-hook":{"name":"updateSlackApp"}}},"/rpc/telemetry.captureEvent":{"post":{"description":"Capture a telemetry event and forward it to PostHog","operationId":"captureEvent","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}},{"allowEmptyValue":true,"description":"Chat Sessions token header","in":"header","name":"Gram-Chat-Session","schema":{"description":"Chat Sessions token header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureEventResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"chat_sessions_token_header_Gram-Chat-Session":[]}],"summary":"captureEvent telemetry","tags":["telemetry"],"x-speakeasy-name-override":"captureEvent"}},"/rpc/telemetry.getHooksSummary":{"post":{"description":"Get aggregated hooks metrics grouped by server","operationId":"getHooksSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHooksSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getHooksSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getHooksSummary","x-speakeasy-react-hook":{"name":"GetHooksSummary","type":"query"}}},"/rpc/telemetry.getObservabilityOverview":{"post":{"description":"Get observability overview metrics including time series, tool breakdowns, and summary stats","operationId":"getObservabilityOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetObservabilityOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getObservabilityOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getObservabilityOverview","x-speakeasy-react-hook":{"name":"GetObservabilityOverview","type":"query"}}},"/rpc/telemetry.getProjectMetricsSummary":{"post":{"description":"Get aggregated metrics summary for an entire project","operationId":"getProjectMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectMetricsSummary","x-speakeasy-react-hook":{"name":"GetProjectMetricsSummary","type":"query"}}},"/rpc/telemetry.getProjectOverview":{"post":{"description":"Get project-level overview including total chats, tool calls, active servers/users, and top lists","operationId":"getProjectOverview","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectOverviewResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getProjectOverview telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getProjectOverview","x-speakeasy-react-hook":{"name":"GetProjectOverview","type":"query"}}},"/rpc/telemetry.getUserMetricsSummary":{"post":{"description":"Get aggregated metrics summary grouped by user","operationId":"getUserMetricsSummary","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserMetricsSummaryResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getUserMetricsSummary telemetry","tags":["telemetry"],"x-speakeasy-name-override":"getUserMetricsSummary","x-speakeasy-react-hook":{"name":"GetUserMetricsSummary","type":"query"}}},"/rpc/telemetry.listAttributeKeys":{"post":{"description":"List distinct attribute keys available for filtering","operationId":"listAttributeKeys","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectMetricsSummaryPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttributeKeysResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listAttributeKeys telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listAttributeKeys","x-speakeasy-react-hook":{"name":"ListAttributeKeys","type":"query"}}},"/rpc/telemetry.listFilterOptions":{"post":{"description":"List available filter options (API keys or users) for the observability overview","operationId":"listFilterOptions","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilterOptionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listFilterOptions telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listFilterOptions","x-speakeasy-react-hook":{"name":"ListFilterOptions","type":"query"}}},"/rpc/telemetry.listHooksTraces":{"post":{"description":"List hook traces aggregated by trace_id with user information","operationId":"listHooksTraces","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHooksTracesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listHooksTraces telemetry","tags":["telemetry"],"x-speakeasy-name-override":"listHooksTraces","x-speakeasy-react-hook":{"name":"ListHooksTraces","type":"query"}}},"/rpc/telemetry.searchChats":{"post":{"description":"Search and list chat session summaries that match a search filter","operationId":"searchChats","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchChatsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchChats telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchChats","x-speakeasy-react-hook":{"name":"SearchChats","type":"query"}}},"/rpc/telemetry.searchLogs":{"post":{"description":"Search and list telemetry logs that match a search filter","operationId":"searchLogs","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchLogsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchLogs telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchLogs","x-speakeasy-react-hook":{"name":"SearchLogs"}}},"/rpc/telemetry.searchToolCalls":{"post":{"description":"Search and list tool calls that match a search filter","operationId":"searchToolCalls","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchToolCallsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchToolCalls telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchToolCalls","x-speakeasy-react-hook":{"name":"SearchToolCalls"}}},"/rpc/telemetry.searchUsers":{"post":{"description":"Search and list user usage summaries grouped by user_id or external_user_id","operationId":"searchUsers","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"searchUsers telemetry","tags":["telemetry"],"x-speakeasy-name-override":"searchUsers","x-speakeasy-react-hook":{"name":"SearchUsers","type":"query"}}},"/rpc/templates.create":{"post":{"description":"Create a new prompt template.","operationId":"createTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createTemplate templates","tags":["templates"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTemplate"}}},"/rpc/templates.delete":{"delete":{"description":"Delete prompt template by its ID or name.","operationId":"deleteTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteTemplate templates","tags":["templates"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTemplate"}}},"/rpc/templates.get":{"get":{"description":"Get prompt template by its ID or name.","operationId":"getTemplate","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template","in":"query","name":"id","schema":{"description":"The ID of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"The name of the prompt template","in":"query","name":"name","schema":{"description":"The name of the prompt template","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getTemplate templates","tags":["templates"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Template"}}},"/rpc/templates.list":{"get":{"description":"List available prompt template.","operationId":"listTemplates","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptTemplatesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listTemplates templates","tags":["templates"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Templates"}}},"/rpc/templates.render":{"post":{"description":"Render a prompt template by ID with provided input data.","operationId":"renderTemplateByID","parameters":[{"allowEmptyValue":true,"description":"The ID of the prompt template to render","in":"query","name":"id","required":true,"schema":{"description":"The ID of the prompt template to render","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateByIDRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplateByID templates","tags":["templates"],"x-speakeasy-name-override":"renderByID","x-speakeasy-react-hook":{"name":"RenderTemplateByID","type":"query"}}},"/rpc/templates.renderDirect":{"post":{"description":"Render a prompt template directly with all template fields provided.","operationId":"renderTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"renderTemplate templates","tags":["templates"],"x-speakeasy-name-override":"render","x-speakeasy-react-hook":{"name":"RenderTemplate","type":"query"}}},"/rpc/templates.update":{"post":{"description":"Update a prompt template.","operationId":"updateTemplate","parameters":[{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTemplateResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateTemplate templates","tags":["templates"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTemplate"}}},"/rpc/tools.list":{"get":{"description":"List all tools for a project","operationId":"listTools","parameters":[{"allowEmptyValue":true,"description":"The cursor to fetch results from","in":"query","name":"cursor","schema":{"description":"The cursor to fetch results from","type":"string"}},{"allowEmptyValue":true,"description":"The number of tools to return per page","in":"query","name":"limit","schema":{"description":"The number of tools to return per page","format":"int32","type":"integer"}},{"allowEmptyValue":true,"description":"The deployment ID. If unset, latest deployment will be used.","in":"query","name":"deployment_id","schema":{"description":"The deployment ID. If unset, latest deployment will be used.","type":"string"}},{"allowEmptyValue":true,"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","in":"query","name":"urn_prefix","schema":{"description":"Filter tools by URN prefix (e.g. 'tools:http:kitchen-sink' to match all tools starting with that prefix)","type":"string"}},{"allowEmptyValue":true,"in":"query","name":"tool_types","schema":{"default":["http","function","prompt","platform"],"items":{"description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"],"type":"string"},"type":"array"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTools tools","tags":["tools"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListTools"}}},"/rpc/toolsets.addExternalOAuthServer":{"post":{"description":"Associate an external OAuth server with a toolset","operationId":"addExternalOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddExternalOAuthServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addExternalOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addExternalOAuthServer","x-speakeasy-react-hook":{"name":"AddExternalOAuthServer"}}},"/rpc/toolsets.addOAuthProxyServer":{"post":{"description":"Associate an OAuth proxy server with a toolset (admin only)","operationId":"addOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"addOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"addOAuthProxyServer","x-speakeasy-react-hook":{"name":"AddOAuthProxyServer"}}},"/rpc/toolsets.checkMCPSlugAvailability":{"get":{"description":"Check if a MCP slug is available","operationId":"checkMCPSlugAvailability","parameters":[{"allowEmptyValue":true,"description":"The slug to check","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"checkMCPSlugAvailability toolsets","tags":["toolsets"],"x-speakeasy-name-override":"checkMCPSlugAvailability","x-speakeasy-react-hook":{"name":"CheckMCPSlugAvailability"}}},"/rpc/toolsets.clone":{"post":{"description":"Clone an existing toolset with a new name","operationId":"cloneToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to clone","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Authorization":[],"project_slug_header_Gram-Project":[]}],"summary":"cloneToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"cloneBySlug","x-speakeasy-react-hook":{"name":"CloneToolset"}}},"/rpc/toolsets.create":{"post":{"description":"Create a new toolset with associated tools","operationId":"createToolset","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateToolset"}}},"/rpc/toolsets.delete":{"delete":{"description":"Delete a toolset by its ID","operationId":"deleteToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"204":{"description":"No Content response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"deleteBySlug","x-speakeasy-react-hook":{"name":"DeleteToolset"}}},"/rpc/toolsets.get":{"get":{"description":"Get detailed information about a toolset including full HTTP tool definitions","operationId":"getToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"getBySlug","x-speakeasy-react-hook":{"name":"Toolset"}}},"/rpc/toolsets.list":{"get":{"description":"List all toolsets for a project","operationId":"listToolsets","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listToolsets toolsets","tags":["toolsets"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"ListToolsets"}}},"/rpc/toolsets.listForOrg":{"get":{"description":"List all toolsets across the organization (summary view)","operationId":"listToolsetsForOrg","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsetSummariesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[]}],"summary":"listToolsetsForOrg toolsets","tags":["toolsets"],"x-speakeasy-name-override":"listForOrg","x-speakeasy-react-hook":{"name":"ListToolsetsForOrg"}}},"/rpc/toolsets.removeOAuthServer":{"post":{"description":"Remove OAuth server association from a toolset","operationId":"removeOAuthServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"removeOAuthServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"removeOAuthServer","x-speakeasy-react-hook":{"name":"RemoveOAuthServer"}}},"/rpc/toolsets.setUserSessionIssuer":{"post":{"description":"Link a toolset to a user_session_issuer (or pass null to unlink). The user_session_issuer must already exist in the caller's project.","operationId":"setToolsetUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to link","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUserSessionIssuerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"setUserSessionIssuer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"setUserSessionIssuer","x-speakeasy-react-hook":{"name":"SetToolsetUserSessionIssuer"}}},"/rpc/toolsets.update":{"post":{"description":"Update a toolset's properties including name, description, and HTTP tools","operationId":"updateToolset","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolsetRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateToolset toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateBySlug","x-speakeasy-react-hook":{"name":"UpdateToolset"}}},"/rpc/toolsets.updateOAuthProxyServer":{"post":{"description":"Update an existing OAuth proxy server associated with a toolset","operationId":"updateOAuthProxyServer","parameters":[{"allowEmptyValue":true,"description":"The slug of the toolset whose OAuth proxy server to update","in":"query","name":"slug","required":true,"schema":{"description":"A short url-friendly label that uniquely identifies a resource.","maxLength":40,"pattern":"^[a-z0-9_-]{1,128}$","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOAuthProxyServerRequestBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toolset"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateOAuthProxyServer toolsets","tags":["toolsets"],"x-speakeasy-name-override":"updateOAuthProxyServer","x-speakeasy-react-hook":{"name":"UpdateOAuthProxyServer"}}},"/rpc/triggers.create":{"post":{"description":"Create a trigger instance.","operationId":"createTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"createTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateTrigger"}}},"/rpc/triggers.definitions.list":{"get":{"description":"List static trigger definitions available to a project.","operationId":"listTriggerDefinitions","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerDefinitionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerDefinitions triggers","tags":["triggers"],"x-speakeasy-name-override":"listDefinitions","x-speakeasy-react-hook":{"name":"TriggerDefinitions"}}},"/rpc/triggers.delete":{"delete":{"description":"Delete a trigger instance.","operationId":"deleteTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"deleteTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteTrigger"}}},"/rpc/triggers.get":{"get":{"description":"Get a trigger instance by ID.","operationId":"getTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"getTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"Trigger"}}},"/rpc/triggers.list":{"get":{"description":"List trigger instances for the current project.","operationId":"listTriggerInstances","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTriggerInstancesResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"listTriggerInstances triggers","tags":["triggers"],"x-speakeasy-name-override":"list","x-speakeasy-react-hook":{"name":"Triggers"}}},"/rpc/triggers.pause":{"post":{"description":"Pause a trigger instance.","operationId":"pauseTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"pauseTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"pause","x-speakeasy-react-hook":{"name":"PauseTrigger"}}},"/rpc/triggers.resume":{"post":{"description":"Resume a trigger instance.","operationId":"resumeTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"The trigger instance ID.","in":"query","name":"id","required":true,"schema":{"description":"The trigger instance ID.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"resumeTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"resume","x-speakeasy-react-hook":{"name":"ResumeTrigger"}}},"/rpc/triggers.update":{"post":{"description":"Update a trigger instance.","operationId":"updateTriggerInstance","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTriggerInstanceForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerInstance"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]}],"summary":"updateTriggerInstance triggers","tags":["triggers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateTrigger"}}},"/rpc/usage.createCheckout":{"post":{"description":"Create a checkout link for upgrading to the business plan","operationId":"createCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createCheckout","x-speakeasy-react-hook":{"name":"createCheckout"}}},"/rpc/usage.createCustomerSession":{"post":{"description":"Create a customer session for the user","operationId":"createCustomerSession","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createCustomerSession usage","tags":["usage"],"x-speakeasy-name-override":"createCustomerSession","x-speakeasy-react-hook":{"name":"createCustomerSession"}}},"/rpc/usage.createTopUpCheckout":{"post":{"description":"Create a checkout link for a one-time credit top-up purchase","operationId":"createTopUpCheckout","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"createTopUpCheckout usage","tags":["usage"],"x-speakeasy-name-override":"createTopUpCheckout","x-speakeasy-react-hook":{"name":"createTopUpCheckout"}}},"/rpc/usage.getPeriodUsage":{"get":{"description":"Get the usage for an organization for a given period","operationId":"getPeriodUsage","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeriodUsage"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"session_header_Gram-Session":[]}],"summary":"getPeriodUsage usage","tags":["usage"],"x-speakeasy-name-override":"getPeriodUsage","x-speakeasy-react-hook":{"name":"getPeriodUsage"}}},"/rpc/usage.getUsageTiers":{"get":{"description":"Get the usage tiers","operationId":"getUsageTiers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTiers"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"summary":"getUsageTiers usage","tags":["usage"],"x-speakeasy-name-override":"getUsageTiers","x-speakeasy-react-hook":{"name":"getUsageTiers"}}},"/rpc/userSessionClients.get":{"get":{"description":"Get a user_session_client by id.","operationId":"getUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionClient"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionClient"}}},"/rpc/userSessionClients.list":{"get":{"description":"List user_session_clients in the caller's project.","operationId":"listUserSessionClients","parameters":[{"allowEmptyValue":true,"description":"Filter to clients registered with this issuer.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter to clients registered with this issuer.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionClientsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionClients userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionClients"}}},"/rpc/userSessionClients.revoke":{"post":{"description":"Soft-delete a user_session_client. Future tokens minted for this client_id are rejected; existing live user_sessions keep working until they hit expires_at.","operationId":"revokeUserSessionClient","parameters":[{"allowEmptyValue":true,"description":"The user_session_client id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionClient userSessionClients","tags":["userSessionClients"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionClient"}}},"/rpc/userSessionConsents.list":{"get":{"description":"List consent records for the caller's project.","operationId":"listUserSessionConsents","parameters":[{"allowEmptyValue":true,"description":"Filter by subject URN.","in":"query","name":"subject_urn","schema":{"description":"Filter by subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_client id.","in":"query","name":"user_session_client_id","schema":{"description":"Filter by user_session_client id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id (joins through user_session_clients).","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id (joins through user_session_clients).","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionConsentsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionConsents userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionConsents"}}},"/rpc/userSessionConsents.revoke":{"post":{"description":"Withdraw consent. Subsequent authorization requests for matching (subject, user_session_client) pairs re-prompt.","operationId":"revokeUserSessionConsent","parameters":[{"allowEmptyValue":true,"description":"The user_session_consent id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_consent id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSessionConsent userSessionConsents","tags":["userSessionConsents"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSessionConsent"}}},"/rpc/userSessionIssuers.create":{"post":{"description":"Create a new user_session_issuer.","operationId":"createUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"createUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"create","x-speakeasy-react-hook":{"name":"CreateUserSessionIssuer"}}},"/rpc/userSessionIssuers.delete":{"delete":{"description":"Soft-delete a user_session_issuer. Cascades to dependent user_sessions, user_session_consents, and remote_session_clients.","operationId":"deleteUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"delete","x-speakeasy-react-hook":{"name":"DeleteUserSessionIssuer"}}},"/rpc/userSessionIssuers.get":{"get":{"description":"Get a user_session_issuer by id or by slug. Provide exactly one.","operationId":"getUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"The user_session_issuer id.","in":"query","name":"id","schema":{"description":"The user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"The user_session_issuer slug.","in":"query","name":"slug","schema":{"description":"The user_session_issuer slug.","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"getUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"get","x-speakeasy-react-hook":{"name":"UserSessionIssuer"}}},"/rpc/userSessionIssuers.list":{"get":{"description":"List user_session_issuers in the caller's project.","operationId":"listUserSessionIssuers","parameters":[{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionIssuersResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessionIssuers userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessionIssuers"}}},"/rpc/userSessionIssuers.update":{"post":{"description":"Update fields on an existing user_session_issuer.","operationId":"updateUserSessionIssuer","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserSessionIssuerForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionIssuer"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"updateUserSessionIssuer userSessionIssuers","tags":["userSessionIssuers"],"x-speakeasy-name-override":"update","x-speakeasy-react-hook":{"name":"UpdateUserSessionIssuer"}}},"/rpc/userSessions.list":{"get":{"description":"List issued user_sessions in the caller's project. refresh_token_hash is never returned.","operationId":"listUserSessions","parameters":[{"allowEmptyValue":true,"description":"Exact-match filter on subject URN.","in":"query","name":"subject_urn","schema":{"description":"Exact-match filter on subject URN.","type":"string"}},{"allowEmptyValue":true,"description":"Filter by user_session_issuer id.","in":"query","name":"user_session_issuer_id","schema":{"description":"Filter by user_session_issuer id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Pagination cursor: id of the last item from the previous page.","in":"query","name":"cursor","schema":{"description":"Pagination cursor: id of the last item from the previous page.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Page size (default 50, max 100).","in":"query","name":"limit","schema":{"description":"Page size (default 50, max 100).","format":"int64","type":"integer"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserSessionsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listUserSessions userSessions","tags":["userSessions"],"x-speakeasy-name-override":"list","x-speakeasy-pagination":{"inputs":[{"in":"parameters","name":"cursor","type":"cursor"}],"outputs":{"nextCursor":"$.next_cursor"},"type":"cursor"},"x-speakeasy-react-hook":{"name":"UserSessions"}}},"/rpc/userSessions.revoke":{"post":{"description":"Push the session's jti into the revocation cache and soft-delete the row.","operationId":"revokeUserSession","parameters":[{"allowEmptyValue":true,"description":"The user_session id.","in":"query","name":"id","required":true,"schema":{"description":"The user_session id.","format":"uuid","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"revokeUserSession userSessions","tags":["userSessions"],"x-speakeasy-name-override":"revoke","x-speakeasy-react-hook":{"name":"RevokeUserSession"}}},"/rpc/variations.deleteGlobal":{"delete":{"description":"Create or update a globally defined tool variation.","operationId":"deleteGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"The ID of the variation to delete","in":"query","name":"variation_id","required":true,"schema":{"description":"The ID of the variation to delete","type":"string"}},{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"deleteGlobal variations","tags":["variations"],"x-speakeasy-name-override":"deleteGlobal","x-speakeasy-react-hook":{"name":"deleteGlobalVariation"}}},"/rpc/variations.listGlobal":{"get":{"description":"List globally defined tool variations.","operationId":"listGlobalVariations","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVariationsResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"listGlobal variations","tags":["variations"],"x-speakeasy-name-override":"listGlobal","x-speakeasy-react-hook":{"name":"GlobalVariations"}}},"/rpc/variations.upsertGlobal":{"post":{"description":"Create or update a globally defined tool variation.","operationId":"upsertGlobalVariation","parameters":[{"allowEmptyValue":true,"description":"Session header","in":"header","name":"Gram-Session","schema":{"description":"Session header","type":"string"}},{"allowEmptyValue":true,"description":"API Key header","in":"header","name":"Gram-Key","schema":{"description":"API Key header","type":"string"}},{"allowEmptyValue":true,"description":"project header","in":"header","name":"Gram-Project","schema":{"description":"project header","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationForm"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertGlobalToolVariationResult"}}},"description":"OK response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"bad_request: request is invalid"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unauthorized: unauthorized access"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"forbidden: permission denied"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"not_found: resource not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"conflict: resource already exists"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unsupported_media: unsupported media type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid: request contains one or more invalidation fields"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"unexpected: an unexpected error occurred"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"gateway_error: an unexpected error occurred"}},"security":[{"project_slug_header_Gram-Project":[],"session_header_Gram-Session":[]},{"apikey_header_Gram-Key":[],"project_slug_header_Gram-Project":[]}],"summary":"upsertGlobal variations","tags":["variations"],"x-speakeasy-name-override":"upsertGlobal","x-speakeasy-react-hook":{"name":"UpsertGlobalVariation"}}}},"components":{"schemas":{"AccessMember":{"type":"object","properties":{"email":{"type":"string","description":"Email address."},"id":{"type":"string","description":"User ID."},"joined_at":{"type":"string","description":"When the member joined the organization.","format":"date-time"},"name":{"type":"string","description":"Display name."},"photo_url":{"type":"string","description":"Avatar URL."},"role_ids":{"type":"array","items":{"type":"string"},"description":"All role IDs assigned to this member."}},"required":["id","name","email","role_ids","joined_at"]},"AddDeploymentPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["name"]},"AddExternalMCPForm":{"type":"object","properties":{"name":{"type":"string","description":"The display name for the external MCP server.","example":"My Slack Integration"},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from.","format":"uuid"},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from.","format":"uuid"},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry (e.g., 'slack', 'ai.exa/exa').","example":"slack"},"selected_remotes":{"type":"array","items":{"type":"string"},"description":"URLs of the remotes to use for this MCP server. If not provided, the backend will auto-select based on transport type preference.","example":["https://mcp.example.com/sse"]},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["name","slug","registry_server_specifier"]},"AddExternalOAuthServerForm":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","external_oauth_server"]},"AddExternalOAuthServerRequestBody":{"type":"object","properties":{"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServerForm"}},"required":["external_oauth_server"]},"AddFunctionsForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the functions file from the assets service."},"memory_mib":{"type":"integer","description":"The amount of memory in MiB to allocate for the function (1 MiB = 1024 * 1024 bytes).","format":"int64","minimum":0,"maximum":4096},"name":{"type":"string","description":"The functions file display name."},"runtime":{"type":"string","description":"The runtime to use when executing functions. Allowed values are: nodejs:22, nodejs:24, python:3.12."},"scale":{"type":"integer","description":"The number of instances to scale the function to.","format":"int64","minimum":0,"maximum":5},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug","runtime"]},"AddOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"AddOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerForm"}},"required":["oauth_proxy_server"]},"AddOpenAPIv3DeploymentAssetForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["asset_id","name","slug"]},"AddOpenAPIv3SourceResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"AddPackageForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package to add."},"version":{"type":"string","description":"The version of the package to add. If omitted, the latest version will be used."}},"required":["name"]},"AddPluginServerForm":{"type":"object","properties":{"display_name":{"type":"string","description":"Display name for the server."},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID for the MCP server.","format":"uuid"}},"required":["plugin_id","toolset_id","display_name"]},"AdminListOrganizationMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AdminOrganizationMember"},"description":"The members of the organization."}},"required":["members"]},"AdminListOrganizationProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/AdminProject"},"description":"The projects belonging to the organization."}},"required":["projects"]},"AdminListOrganizationsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/AdminOrganization"},"description":"The page of organizations."}},"required":["organizations"]},"AdminOrganization":{"type":"object","properties":{"account_type":{"type":"string","description":"Gram account type (e.g. free, pro, enterprise)."},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"disabled_at":{"type":"string","description":"The time at which the organization was disabled, if any.","format":"date-time"},"free_trial_ends_at":{"type":"string","description":"The time at which the free trial ends.","format":"date-time"},"free_trial_started_at":{"type":"string","description":"The time at which the free trial started.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"member_count":{"type":"integer","description":"Number of active members in the organization.","format":"int64"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted for full access."},"workos_id":{"type":"string","description":"WorkOS organization ID, if linked."}},"description":"Organization details surfaced to admin operators.","required":["id","name","slug","account_type","whitelisted","member_count","created_at","updated_at"]},"AdminOrganizationMember":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"User display name."},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"User ID."},"last_login":{"type":"string","description":"The time the user last logged in, if any.","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"description":"Organization member surfaced to admin operators.","required":["id","email","display_name","created_at","updated_at"]},"AdminProject":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"description":"Project summary surfaced to admin operators.","required":["id","name","slug","created_at","updated_at"]},"AdminProjectDetail":{"type":"object","properties":{"api_key_count":{"type":"integer","description":"Number of active API keys in the project.","format":"int64"},"assistant_count":{"type":"integer","description":"Number of active assistants in the project.","format":"int64"},"created_at":{"type":"string","format":"date-time"},"deployment_count":{"type":"integer","description":"Total number of deployments in the project.","format":"int64"},"environment_count":{"type":"integer","description":"Number of active environments in the project.","format":"int64"},"functions_runner_version":{"type":"string","description":"Functions runner version pin, if set."},"http_tool_count":{"type":"integer","description":"Number of active HTTP tool definitions in the project.","format":"int64"},"id":{"type":"string","description":"Project ID."},"logo_asset_id":{"type":"string","description":"Project logo asset ID, if set."},"name":{"type":"string","description":"Project name."},"organization_id":{"type":"string","description":"Owning organization ID."},"slug":{"type":"string","description":"Project slug."},"toolset_count":{"type":"integer","description":"Number of active toolsets in the project.","format":"int64"},"updated_at":{"type":"string","format":"date-time"}},"description":"Full project detail surfaced to admin operators, including aggregated counts of child resources.","required":["id","name","slug","organization_id","toolset_count","deployment_count","http_tool_count","environment_count","api_key_count","assistant_count","created_at","updated_at"]},"AllowedOrigin":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the allowed origin.","format":"date-time"},"id":{"type":"string","description":"The ID of the allowed origin"},"origin":{"type":"string","description":"The origin URL"},"project_id":{"type":"string","description":"The ID of the project"},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]},"updated_at":{"type":"string","description":"The last update date of the allowed origin.","format":"date-time"}},"required":["id","project_id","origin","status","created_at","updated_at"]},"ApproveShadowMCPRequestBody":{"type":"object","properties":{"match":{"type":"string","description":"The MCP server identifier to approve."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server (optional, for UI)."}},"required":["policy_id","match"]},"Asset":{"type":"object","properties":{"content_length":{"type":"integer","description":"The content length of the asset","format":"int64"},"content_type":{"type":"string","description":"The content type of the asset"},"created_at":{"type":"string","description":"The creation date of the asset.","format":"date-time"},"id":{"type":"string","description":"The ID of the asset"},"kind":{"type":"string","enum":["openapiv3","image","functions","chat_attachment","unknown"]},"sha256":{"type":"string","description":"The SHA256 hash of the asset"},"updated_at":{"type":"string","description":"The last update date of the asset.","format":"date-time"}},"required":["id","kind","sha256","content_type","content_length","created_at","updated_at"]},"Assistant":{"type":"object","properties":{"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes for the assistant.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"project_id":{"type":"string","description":"The project ID owning the assistant.","format":"uuid"},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id","project_id","name","model","instructions","toolsets","warm_ttl_seconds","max_concurrency","status","created_at","updated_at"]},"AssistantMemory":{"type":"object","properties":{"assistant_id":{"type":"string","description":"The assistant ID owning the memory.","format":"uuid"},"content":{"type":"string","description":"The memory content."},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"deleted_at":{"type":"string","description":"Timestamp at which the memory was soft-deleted.","format":"date-time"},"id":{"type":"string","description":"The assistant memory ID.","format":"uuid"},"last_access":{"type":"string","description":"Timestamp of the most recent access.","format":"date-time"},"superseded_at":{"type":"string","description":"Timestamp at which the memory was superseded by another memory.","format":"date-time"},"supersedes_id":{"type":"string","description":"The ID of the memory this one supersedes, if any.","format":"uuid"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the memory."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"valid_at":{"type":"string","description":"Timestamp at which the memory becomes valid.","format":"date-time"}},"required":["id","assistant_id","content","tags","created_at","updated_at","last_access","valid_at"]},"AssistantToolsetRef":{"type":"object","properties":{"environment_slug":{"type":"string","description":"Optional environment slug used when invoking the toolset."},"toolset_slug":{"type":"string","description":"The toolset slug exposed to the assistant."}},"required":["toolset_slug"]},"AttachServerRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection","format":"uuid"},"toolset_id":{"type":"string","description":"ID of the toolset to attach","format":"uuid"}},"required":["collection_id","toolset_id"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"actor_display_name":{"type":"string"},"actor_id":{"type":"string"},"actor_slug":{"type":"string"},"actor_type":{"type":"string"},"after_snapshot":{},"before_snapshot":{},"created_at":{"type":"string","description":"The creation date of the audit log.","format":"date-time"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"project_id":{"type":"string"},"project_slug":{"type":"string"},"subject_display_name":{"type":"string"},"subject_id":{"type":"string"},"subject_slug":{"type":"string"},"subject_type":{"type":"string"}},"required":["id","actor_id","actor_type","action","subject_id","subject_type","created_at"]},"AuditLogFacetOption":{"type":"object","properties":{"count":{"type":"integer","description":"The number of audit logs for this facet value","format":"int64"},"display_name":{"type":"string","description":"The display label shown for the facet value"},"value":{"type":"string","description":"The facet value used for filtering"}},"required":["value","display_name","count"]},"AuthzChallenge":{"type":"object","properties":{"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"id":{"type":"string","description":"Unique challenge identifier."},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the challenge was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the challenge was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"timestamp":{"type":"string","description":"When the authz decision was made.","format":"date-time"},"user_email":{"type":"string","description":"Email when available."}},"required":["id","timestamp","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count"]},"BaseResourceAttributes":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"description":{"type":"string","description":"Description of the resource"},"id":{"type":"string","description":"The ID of the resource"},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"}},"description":"Common attributes shared by all resource types","required":["id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"BaseToolAttributes":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"Common attributes shared by all tool types","required":["id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"CanonicalToolAttributes":{"type":"object","properties":{"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"description":{"type":"string","description":"Description of the tool"},"name":{"type":"string","description":"The name of the tool"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"variation_id":{"type":"string","description":"The ID of the variation that was applied to the tool"}},"description":"The original details of a tool","required":["variation_id","name","description"]},"CaptureEventPayload":{"type":"object","properties":{"distinct_id":{"type":"string","description":"Distinct ID for the user or entity (defaults to organization ID if not provided)"},"event":{"type":"string","description":"Event name","example":"button_clicked","minLength":1,"maxLength":255},"properties":{"type":"object","description":"Event properties as key-value pairs","example":{"button_name":"submit","page":"checkout","value":100},"additionalProperties":true}},"description":"Payload for capturing a telemetry event","required":["event"]},"CaptureEventResult":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the event was successfully captured"}},"description":"Result of capturing a telemetry event","required":["success"]},"ChallengeBucket":{"type":"object","properties":{"challenge_count":{"type":"integer","description":"Number of individual challenges in this bucket.","format":"int64"},"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of all challenges in this bucket."},"evaluated_grant_count":{"type":"integer","description":"Total grants evaluated.","format":"int64"},"first_seen":{"type":"string","description":"Timestamp of the earliest challenge in the bucket.","format":"date-time"},"id":{"type":"string","description":"ID of the most recent challenge in the bucket."},"last_seen":{"type":"string","description":"Timestamp of the most recent challenge in the bucket.","format":"date-time"},"matched_grant_count":{"type":"integer","description":"Number of grants that matched.","format":"int64"},"operation":{"type":"string","enum":["require","require_any","filter"]},"organization_id":{"type":"string","description":"Organization the principal was acting in."},"outcome":{"type":"string","enum":["allow","deny","error"]},"photo_url":{"type":"string","description":"User avatar URL when available."},"principal_type":{"type":"string","description":"Kind of principal.","enum":["user","api_key","assistant"]},"principal_urn":{"type":"string","description":"Principal URN e.g. user:\u003cuuid\u003e or api_key:\u003cid\u003e."},"project_id":{"type":"string","description":"Project scope (empty for org-level checks)."},"reason":{"type":"string","enum":["grant_matched","no_grants","scope_unsatisfied","deny_grant","invalid_check","rbac_skipped_apikey","dev_override"]},"resolution_role_slug":{"type":"string","description":"Role slug assigned (when resolution_type=role_assigned)."},"resolution_type":{"type":"string","description":"How the bucket was resolved.","enum":["role_assigned","dismissed"]},"resolved_at":{"type":"string","description":"When the bucket was resolved by an admin.","format":"date-time"},"resolved_by":{"type":"string","description":"URN of the admin who resolved."},"resource_id":{"type":"string","description":"Resource ID of the check."},"resource_kind":{"type":"string","description":"Resource kind of the check."},"role_slugs":{"type":"array","items":{"type":"string"},"description":"Roles the principal had loaded."},"scope":{"type":"string","description":"Scope that was checked."},"user_email":{"type":"string","description":"Email when available."}},"description":"A group of consecutive challenges with the same dimensions that occurred within a 10-minute window.","required":["id","last_seen","first_seen","organization_id","principal_urn","principal_type","operation","outcome","reason","scope","role_slugs","evaluated_grant_count","matched_grant_count","challenge_count","challenge_ids"]},"ChallengeResolution":{"type":"object","properties":{"challenge_id":{"type":"string","description":"ClickHouse challenge ID."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Resolution record ID."},"organization_id":{"type":"string","description":"Organization ID."},"principal_urn":{"type":"string","description":"Denied principal."},"resolution_type":{"type":"string","enum":["role_assigned","dismissed"]},"resolved_by":{"type":"string","description":"Admin who resolved."},"resource_id":{"type":"string","description":"Resource ID."},"resource_kind":{"type":"string","description":"Resource kind."},"role_slug":{"type":"string","description":"Assigned role slug."},"scope":{"type":"string","description":"Denied scope."}},"required":["id","organization_id","challenge_id","principal_urn","scope","resolution_type","resolved_by","created_at"]},"Chat":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"},"description":"The list of messages in the chat"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["messages","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatMessage":{"type":"object","properties":{"content":{"description":"The content of the message — string for plain text, array for multimodal/tool-call content parts, null for assistant messages that only carry tool_calls"},"created_at":{"type":"string","description":"When the message was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the message"},"finish_reason":{"type":"string","description":"The finish reason of the message"},"generation":{"type":"integer","description":"Conversation generation — bumps on compaction or edit divergence","format":"int64"},"id":{"type":"string","description":"The ID of the message"},"model":{"type":"string","description":"The model that generated the message"},"role":{"type":"string","description":"The role of the message"},"tool_call_id":{"type":"string","description":"The tool call ID of the message"},"tool_calls":{"type":"string","description":"The tool calls in the message as a JSON blob"},"user_id":{"type":"string","description":"The ID of the user who created the message"}},"required":["id","role","model","created_at","generation"]},"ChatOverview":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"required":["id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatOverviewWithResolutions":{"type":"object","properties":{"created_at":{"type":"string","description":"When the chat was created.","format":"date-time"},"external_user_id":{"type":"string","description":"The ID of the external user who created the chat"},"id":{"type":"string","description":"The ID of the chat"},"last_message_timestamp":{"type":"string","description":"When the last message in the chat was created.","format":"date-time"},"num_messages":{"type":"integer","description":"The number of messages in the chat","format":"int64"},"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChatResolution"},"description":"List of resolutions for this chat"},"risk_findings_count":{"type":"integer","description":"Number of risk findings recorded against messages in this chat (project-scoped, found=true). Only populated by endpoints that join risk data; absent elsewhere.","format":"int64"},"source":{"type":"string","description":"The source of the chat: Elements, Playground, ClaudeCode (inferred from messages)"},"title":{"type":"string","description":"The title of the chat"},"total_cost":{"type":"number","description":"Total cost in USD for this chat","format":"double"},"total_input_tokens":{"type":"integer","description":"Total input tokens used in this chat","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used in this chat","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens (input + output) used in this chat","format":"int64"},"updated_at":{"type":"string","description":"When the chat was last updated.","format":"date-time"},"user_id":{"type":"string","description":"The ID of the user who created the chat"}},"description":"Chat overview with embedded resolution data","required":["resolutions","id","title","num_messages","created_at","updated_at","last_message_timestamp"]},"ChatResolution":{"type":"object","properties":{"created_at":{"type":"string","description":"When resolution was created","format":"date-time"},"id":{"type":"string","description":"Resolution ID","format":"uuid"},"message_ids":{"type":"array","items":{"type":"string"},"description":"Message IDs associated with this resolution","example":["abc-123","def-456"]},"resolution":{"type":"string","description":"Resolution status"},"resolution_notes":{"type":"string","description":"Notes about the resolution"},"score":{"type":"integer","description":"Score 0-100","format":"int64"},"user_goal":{"type":"string","description":"User's intended goal"}},"description":"Resolution information for a chat","required":["id","user_goal","resolution","resolution_notes","score","created_at","message_ids"]},"ChatSummary":{"type":"object","properties":{"duration_seconds":{"type":"number","description":"Chat session duration in seconds","format":"double"},"end_time_unix_nano":{"type":"string","description":"Latest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"gram_chat_id":{"type":"string","description":"Chat session ID"},"log_count":{"type":"integer","description":"Total number of logs in this chat session","format":"int64"},"message_count":{"type":"integer","description":"Number of LLM completion messages in this chat session","format":"int64"},"model":{"type":"string","description":"LLM model used in this chat session"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"status":{"type":"string","description":"Chat session status","enum":["success","error"]},"tool_call_count":{"type":"integer","description":"Number of tool calls in this chat session","format":"int64"},"total_input_tokens":{"type":"integer","description":"Total input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Total output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Total tokens used (input + output)","format":"int64"},"user_id":{"type":"string","description":"User ID associated with this chat session"}},"description":"Summary information for a chat session","required":["gram_chat_id","start_time_unix_nano","end_time_unix_nano","log_count","tool_call_count","message_count","duration_seconds","status","total_input_tokens","total_output_tokens","total_tokens"]},"ClaudeHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cwd":{"type":"string","description":"The working directory when the event fired"},"error":{"description":"The error from the tool (PostToolUseFailure only)"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PostToolUse","PostToolUseFailure","UserPromptSubmit","Stop","SessionEnd","Notification"]},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption (PostToolUseFailure only)"},"last_assistant_message":{"type":"string","description":"Claude's final response text (Stop only)"},"message":{"type":"string","description":"Notification message text (Notification only)"},"model":{"type":"string","description":"The model identifier (SessionStart, Stop)"},"notification_type":{"type":"string","description":"Type of notification: permission_prompt, idle_prompt, auth_success, elicitation_dialog (Notification only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"reason":{"type":"string","description":"Why the session ended (SessionEnd only)"},"session_id":{"type":"string","description":"The Claude Code session ID"},"source":{"type":"string","description":"How the session started: startup, resume, clear, compact (SessionStart only)"},"stop_hook_active":{"type":"boolean","description":"Whether a stop hook continuation is active (Stop only)"},"title":{"type":"string","description":"Notification title (Notification only)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool (for tool-related events)"},"tool_response":{"description":"The response from the tool (PostToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Unified payload for all Claude Code hook events","required":["hook_event_name"]},"ClaudeHookResult":{"type":"object","properties":{"continue":{"type":"boolean","description":"Whether to continue (SessionStart only)"},"decision":{"type":"string","description":"Top-level block decision for UserPromptSubmit / PostToolUse / Stop / SubagentStop. Use 'block' to halt processing."},"hookSpecificOutput":{"description":"Hook-specific output as JSON object"},"reason":{"type":"string","description":"Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude (PostToolUse/Stop)."},"stopReason":{"type":"string","description":"Reason if blocked (SessionStart only)"},"suppressOutput":{"type":"boolean","description":"Whether to suppress the hook's output"},"systemMessage":{"type":"string","description":"Warning message shown to the user in the terminal"}},"description":"Unified result for all Claude Code hook events with proper response structure"},"CloneClientFromOAuthProxyProviderForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange for the cloned client.","pattern":"^[!-~]+$","maxLength":512},"oauth_proxy_provider_id":{"type":"string","description":"The oauth_proxy_provider to read client_id / client_secret from. Must live in the caller's project.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The remote_session_issuer the new client is registered with.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for the cloned client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the cloned client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer the new client is paired with.","format":"uuid"}},"description":"Form for cloning an oauth_proxy_provider's client credentials into a new remote_session_client. The caller supplies the existing oauth_proxy_provider, plus the remote_session_issuer and user_session_issuer to pair the new client with.","required":["oauth_proxy_provider_id","remote_session_issuer_id","user_session_issuer_id"]},"CloneEnvironmentForm":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for cloning an existing environment into a new one","required":["slug","new_name"]},"CloneEnvironmentRequestBody":{"type":"object","properties":{"copy_values":{"type":"boolean","description":"If true, copy the encrypted secret values from the source. If false (default), copy only variable names with empty placeholder values."},"new_name":{"type":"string","description":"The name for the new cloned environment"}},"required":["new_name"]},"CodexHookPayload":{"type":"object","properties":{"cwd":{"type":"string","description":"The working directory when the event fired"},"hook_event_name":{"type":"string","description":"The type of hook event","enum":["SessionStart","PreToolUse","PermissionRequest","PostToolUse","UserPromptSubmit","Stop"]},"model":{"type":"string","description":"The model identifier"},"permission_type":{"type":"string","description":"The type of permission being requested (PermissionRequest only)"},"prompt":{"type":"string","description":"The user's prompt text (UserPromptSubmit only)"},"session_id":{"type":"string","description":"The Codex session ID"},"tool_input":{"description":"The input to the tool (PreToolUse only)"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_output":{"description":"The output from the tool (PostToolUse only)"},"transcript_path":{"type":"string","description":"Path to the conversation transcript file"}},"description":"Payload for Codex hook events","required":["hook_event_name"]},"CodexHookResult":{"type":"object","properties":{"decision":{"type":"string","description":"Permission decision for blocking events: allow or deny"},"reason":{"type":"string","description":"Reason for the decision, shown to the user"}},"description":"Result for Codex hook events"},"ConfigureSlackAppRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"slack_client_id":{"type":"string","description":"Slack app Client ID"},"slack_client_secret":{"type":"string","description":"Slack app Client Secret"},"slack_signing_secret":{"type":"string","description":"Slack app Signing Secret"}},"required":["id","slack_client_id","slack_client_secret","slack_signing_secret"]},"CreateAssistantForm":{"type":"object","properties":{"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Optional maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Optional warm runtime TTL in seconds.","format":"int64"}},"required":["name","model","instructions","toolsets"]},"CreateDeploymentForm":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}},"required":["idempotency_key"]},"CreateDeploymentRequestBody":{"type":"object","properties":{"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"}},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"}},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"}},"packages":{"type":"array","items":{"$ref":"#/components/schemas/AddDeploymentPackageForm"}}}},"CreateDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"CreateDomainRequestBody":{"type":"object","properties":{"domain":{"type":"string","description":"The custom domain"}},"required":["domain"]},"CreateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment variable entries"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"}},"description":"Form for creating a new environment","required":["organization_id","name","entries"]},"CreateKeyForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes of the key that determines its permissions.","minItems":1}},"required":["name","scopes"]},"CreateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit for a platform-domain endpoint.","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for creating a new MCP endpoint. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["mcp_server_id","slug"]},"CreateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. When set, MCP clients are required to authenticate against this issuer before connecting.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for creating a new MCP server. Exactly one of remote_mcp_server_id or toolset_id must be provided.","required":["name","visibility"]},"CreatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"name":{"type":"string","description":"The name of the package","pattern":"^[a-z0-9_-]{1,128}$","maxLength":100},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["name","title","summary"]},"CreatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"CreatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Optional description."},"name":{"type":"string","description":"Display name for the plugin."},"slug":{"type":"string","description":"Optional URL-safe identifier. Auto-generated from name if omitted."}},"required":["name"]},"CreatePortalSessionResult":{"type":"object","properties":{"token":{"type":"string","description":"Front-end token for the webhook portal session."},"url":{"type":"string","description":"URL for the webhook portal session."}},"required":["url","token"]},"CreateProjectForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"},"session_token":{"type":"string"}},"required":["organization_id","name"]},"CreateProjectRequestBody":{"type":"object","properties":{"name":{"type":"string","description":"The name of the project","maxLength":40},"organization_id":{"type":"string","description":"The ID of the organization to create the project in"}},"required":["organization_id","name"]},"CreateProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"CreatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["name","prompt","engine","kind"]},"CreatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"CreateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Optional upstream OAuth audience to send on the authorize redirect and token exchange.","pattern":"^[!-~]+$","maxLength":512},"client_id":{"type":"string","description":"client_id supplied by the caller."},"client_secret":{"type":"string","description":"client_secret supplied by the caller. Gram encrypts before persisting."},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Explicit upstream OAuth scopes the dance should request for this client. Omit to fall back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Omit to default to client_secret_basic.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"Form for creating a remote_session_client. Caller supplies client_id (and optional client_secret) obtained out-of-band from the upstream issuer.","required":["remote_session_issuer_id","user_session_issuer_id","client_id"]},"CreateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Grant types advertised by the issuer."},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour. Default false."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer. Default false."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; absent for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Response types advertised by the issuer."},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes advertised by the issuer."},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Token endpoint auth methods advertised by the issuer."}},"description":"Form for creating a remote_session_issuer.","required":["slug","issuer"]},"CreateRequestBody":{"type":"object","properties":{"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds (max / default 3600)","default":3600,"format":"int64","minimum":1,"maximum":3600},"user_identifier":{"type":"string","description":"Optional free-form user identifier"}},"required":["embed_origin"]},"CreateRequestBody2":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection","maxLength":500},"mcp_registry_namespace":{"type":"string","description":"Registry namespace (e.g., 'com.speakeasy.acme.my-tools')","minLength":1,"maxLength":200},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"slug":{"type":"string","description":"URL-friendly identifier for the collection","minLength":1,"maxLength":60},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to the collection"},"visibility":{"type":"string","description":"Visibility of the collection","default":"private","enum":["public","private"]}},"required":["name","slug","mcp_registry_namespace"]},"CreateResponseBody":{"type":"object","properties":{"client_token":{"type":"string","description":"JWT token for chat session"},"embed_origin":{"type":"string","description":"The origin from which the token will be used"},"expires_after":{"type":"integer","description":"Token expiration in seconds","format":"int64"},"status":{"type":"string","description":"Session status"},"user_identifier":{"type":"string","description":"User identifier if provided"}},"required":["embed_origin","client_token","expires_after","status"]},"CreateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"name":{"type":"string","description":"The policy name. If omitted, a name will be auto-generated."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding."}}},"CreateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Description of what this role can do."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants to assign."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role on creation."},"name":{"type":"string","description":"Display name for the role."}},"required":["name","description","grants"]},"CreateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"Headers to send when proxying requests to the remote server"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server. Empty values are stored as null."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for creating a new remote MCP server","required":["url","transport_type","headers"]},"CreateSignedChatAttachmentURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLForm2":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the chat attachment"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"ttl_seconds":{"type":"integer","description":"Time-to-live in seconds (default: 600, max: 3600)","format":"int64"}},"required":["id","project_id"]},"CreateSignedChatAttachmentURLResult":{"type":"object","properties":{"expires_at":{"type":"string","description":"When the signed URL expires","format":"date-time"},"url":{"type":"string","description":"The signed URL to access the chat attachment"}},"required":["url","expires_at"]},"CreateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"name":{"type":"string","description":"Display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Toolset IDs to attach to this app"}},"required":["name","toolset_ids"]},"CreateSlackAppResult":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/SlackAppResult"}},"required":["app"]},"CreateToolsetForm":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_slug_input":{"type":"string"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateToolsetRequestBody":{"type":"object","properties":{"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"name":{"type":"string","description":"The name of the toolset"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["name"]},"CreateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"Optional initial status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["definition_slug","name","target_kind","target_ref","target_display","config"]},"CreateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"How multi-remote authn challenges are presented: chain | interactive.","enum":["chain","interactive"]},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."}},"description":"Form for creating a user_session_issuer.","required":["slug","authn_challenge_mode","session_duration_hours"]},"CreditUsageResponseBody":{"type":"object","properties":{"credits_used":{"type":"number","description":"The number of credits remaining","format":"double"},"monthly_credits":{"type":"integer","description":"The number of monthly credits","format":"int64"}},"required":["credits_used","monthly_credits"]},"CursorHookPayload":{"type":"object","properties":{"additional_data":{"type":"object","description":"Additional hook-specific data","additionalProperties":true},"cache_read_tokens":{"type":"integer","description":"Tokens read from cache (stop, afterAgentResponse)","format":"int64"},"cache_write_tokens":{"type":"integer","description":"Tokens written to cache (stop, afterAgentResponse)","format":"int64"},"command":{"type":"string","description":"Command string for command-based MCP servers (beforeMCPExecution / afterMCPExecution only)"},"composer_mode":{"type":"string","description":"The composer mode, e.g. agent (beforeSubmitPrompt only)"},"conversation_id":{"type":"string","description":"The Cursor conversation ID"},"cursor_version":{"type":"string","description":"The Cursor IDE version"},"duration":{"type":"number","description":"Execution duration in milliseconds, excluding approval wait time (afterMCPExecution only)","format":"double"},"duration_ms":{"type":"integer","description":"Duration in milliseconds for the thinking block (afterAgentThought only)","format":"int64"},"error":{"description":"The error from the tool (postToolUseFailure only)"},"generation_id":{"type":"string","description":"The Cursor generation ID"},"hook_event_name":{"type":"string","description":"The type of hook event (e.g. beforeSubmitPrompt, stop, afterAgentResponse, afterAgentThought, preToolUse, postToolUse, postToolUseFailure, beforeMCPExecution, afterMCPExecution)"},"input_tokens":{"type":"integer","description":"Total input tokens used (stop, afterAgentResponse)","format":"int64"},"is_interrupt":{"type":"boolean","description":"Whether the failure was caused by user interruption"},"loop_count":{"type":"integer","description":"Number of agentic loops executed (stop only)","format":"int64"},"model":{"type":"string","description":"The model being used"},"output_tokens":{"type":"integer","description":"Total output tokens used (stop, afterAgentResponse)","format":"int64"},"prompt":{"type":"string","description":"The user's prompt text (beforeSubmitPrompt only)"},"result_json":{"type":"string","description":"JSON-encoded string of the MCP tool response (afterMCPExecution only)"},"session_id":{"type":"string","description":"The session ID from Cursor"},"status":{"type":"string","description":"Completion status, e.g. completed (stop only)"},"text":{"type":"string","description":"The assistant's response text (afterAgentResponse) or thinking text (afterAgentThought)"},"tool_input":{"description":"The input to the tool"},"tool_name":{"type":"string","description":"The name of the tool"},"tool_response":{"description":"The response from the tool (postToolUse only)"},"tool_use_id":{"type":"string","description":"The unique ID for this tool use"},"transcript_path":{"type":"string","description":"Path to the conversation transcript JSONL file"},"url":{"type":"string","description":"URL of the MCP server (beforeMCPExecution / afterMCPExecution, URL-based servers only)"},"user_email":{"type":"string","description":"Email of the authenticated Cursor user, if available"}},"description":"Payload for Cursor hook events","required":["hook_event_name"]},"CursorHookResult":{"type":"object","properties":{"additional_context":{"type":"string","description":"Additional context to inject into the conversation"},"agent_message":{"type":"string","description":"Message sent back to the agent (beforeMCPExecution only)"},"permission":{"type":"string","description":"Permission decision for preToolUse / beforeMCPExecution: allow, deny, or ask"},"user_message":{"type":"string","description":"Message to display to the user"}},"description":"Result for Cursor hook events"},"CustomDomain":{"type":"object","properties":{"activated":{"type":"boolean","description":"Whether the domain is activated in ingress"},"created_at":{"type":"string","description":"When the custom domain was created.","format":"date-time"},"domain":{"type":"string","description":"The custom domain name"},"id":{"type":"string","description":"The ID of the custom domain"},"is_updating":{"type":"boolean","description":"The custom domain is actively being registered"},"organization_id":{"type":"string","description":"The ID of the organization this domain belongs to"},"updated_at":{"type":"string","description":"When the custom domain was last updated.","format":"date-time"},"verified":{"type":"boolean","description":"Whether the domain is verified"}},"required":["id","organization_id","domain","verified","activated","created_at","updated_at","is_updating"]},"CustomDomainMcpEndpoint":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the parent MCP server","format":"uuid"},"mcp_server_name":{"type":"string","description":"The display name of the parent MCP server. May be empty if the parent has no configured name."},"mcp_server_slug":{"type":"string","description":"The url-friendly slug of the parent MCP server. May be empty if the parent has no configured slug."},"project_id":{"type":"string","description":"The ID of the project the endpoint belongs to","format":"uuid"},"project_name":{"type":"string","description":"The display name of the project the endpoint belongs to"},"project_slug":{"type":"string","description":"The url-friendly slug of the project the endpoint belongs to"},"slug":{"type":"string","description":"The endpoint slug"}},"description":"An MCP endpoint registered under a custom domain, with its parent MCP server and project denormalised for display in the dashboard's delete-impact preview.","required":["id","slug","project_id","project_name","project_slug","mcp_server_id"]},"DeleteGlobalToolVariationForm":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation to delete"}},"required":["variation_id"]},"DeleteGlobalToolVariationResult":{"type":"object","properties":{"variation_id":{"type":"string","description":"The ID of the variation that was deleted"}},"required":["variation_id"]},"DeleteRequestBody":{"type":"object","properties":{"override_id":{"type":"string","description":"Override ID to delete"}},"required":["override_id"]},"Deployment":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"DeploymentExternalMCP":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment external MCP record."},"name":{"type":"string","description":"The display name for the external MCP server."},"organization_mcp_collection_registry_id":{"type":"string","description":"The ID of the internal collection registry the server is from."},"registry_id":{"type":"string","description":"The ID of the external MCP registry the server is from."},"registry_server_specifier":{"type":"string","description":"The canonical server name used to look up the server in the registry."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug","registry_server_specifier"]},"DeploymentFunctions":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"memory_mib":{"type":"integer","description":"The memory limit in MiB of function runner machines.","format":"int32"},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"runtime":{"type":"string","description":"The runtime to use when executing functions."},"scale":{"type":"integer","description":"The number of instances to run for the function.","format":"int32"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug","runtime"]},"DeploymentLogEvent":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The ID of the asset tied to the log event"},"attachment_type":{"type":"string","description":"The type of the asset tied to the log event"},"created_at":{"type":"string","description":"The creation date of the log event"},"event":{"type":"string","description":"The type of event that occurred"},"id":{"type":"string","description":"The ID of the log event"},"message":{"type":"string","description":"The message of the log event"}},"required":["id","created_at","event","message"]},"DeploymentPackage":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment package."},"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."}},"required":["id","name","version"]},"DeploymentSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_mcp_asset_count":{"type":"integer","description":"The number of external MCP server assets.","format":"int64"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"functions_asset_count":{"type":"integer","description":"The number of Functions assets.","format":"int64"},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"openapiv3_asset_count":{"type":"integer","description":"The number of upstream OpenAPI assets.","format":"int64"},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","user_id","status","openapiv3_asset_count","openapiv3_tool_count","functions_asset_count","functions_tool_count","external_mcp_asset_count","external_mcp_tool_count"]},"DiscoverRemoteSessionIssuerRequestBody":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL to discover (e.g. https://login.linear.com)."}},"required":["issuer"]},"Environment":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment","format":"date-time"},"description":{"type":"string","description":"The description of the environment"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntry"},"description":"List of environment entries"},"id":{"type":"string","description":"The ID of the environment"},"name":{"type":"string","description":"The name of the environment"},"organization_id":{"type":"string","description":"The organization ID this environment belongs to"},"project_id":{"type":"string","description":"The project ID this environment belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the environment was last updated","format":"date-time"}},"description":"Model representing an environment","required":["id","organization_id","project_id","name","slug","entries","created_at","updated_at"]},"EnvironmentEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the environment entry","format":"date-time"},"name":{"type":"string","description":"The name of the environment variable"},"updated_at":{"type":"string","description":"When the environment entry was last updated","format":"date-time"},"value":{"type":"string","description":"Redacted values of the environment variable"},"value_hash":{"type":"string","description":"Hash of the value to identify matching values across environments without exposing the actual value"}},"description":"A single environment entry","required":["name","value","value_hash","created_at","updated_at"]},"EnvironmentEntryInput":{"type":"object","properties":{"name":{"type":"string","description":"The name of the environment variable"},"value":{"type":"string","description":"The value of the environment variable"}},"description":"A single environment entry","required":["name","value"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem.","example":"123abc"},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem.","example":"parameter 'p' must be an integer"},"name":{"type":"string","description":"Name is the name of this class of errors.","example":"bad_request"},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"description":"unauthorized access","required":["name","id","message","temporary","timeout","fault"]},"EvolveForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to evolve. If omitted, the latest deployment will be used."},"exclude_external_mcps":{"type":"array","items":{"type":"string"},"description":"The external MCP servers, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_functions":{"type":"array","items":{"type":"string"},"description":"The functions, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_openapiv3_assets":{"type":"array","items":{"type":"string"},"description":"The OpenAPI 3.x documents, identified by slug, to exclude from the new deployment when cloning a previous deployment."},"exclude_packages":{"type":"array","items":{"type":"string"},"description":"The packages to exclude from the new deployment when cloning a previous deployment."},"non_blocking":{"type":"boolean","description":"If true, the deployment will be created in non-blocking mode where the request will return immediately and the deployment will proceed asynchronously.","example":false},"upsert_external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/AddExternalMCPForm"},"description":"The external MCP servers to upsert in the new deployment."},"upsert_functions":{"type":"array","items":{"$ref":"#/components/schemas/AddFunctionsForm"},"description":"The tool functions to upsert in the new deployment."},"upsert_openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/AddOpenAPIv3DeploymentAssetForm"},"description":"The OpenAPI 3.x documents to upsert in the new deployment."},"upsert_packages":{"type":"array","items":{"$ref":"#/components/schemas/AddPackageForm"},"description":"The packages to upsert in the new deployment."}}},"EvolveResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"ExportMcpMetadataRequestBody":{"type":"object","properties":{"mcp_slug":{"type":"string","description":"The MCP server slug (from the install URL)","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["mcp_slug"]},"ExternalMCPHeaderDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"header_name":{"type":"string","description":"The actual HTTP header name to send (e.g., X-Api-Key)"},"name":{"type":"string","description":"The prefixed environment variable name (e.g., SLACK_X_API_KEY)"},"placeholder":{"type":"string","description":"Placeholder value for the header"},"required":{"type":"boolean","description":"Whether the header is required"},"secret":{"type":"boolean","description":"Whether the header value is secret"}},"required":["name","header_name","required","secret"]},"ExternalMCPRemote":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemoteHeader"},"description":"HTTP headers the MCP client should collect and send when connecting to this remote"},"transport_type":{"type":"string","description":"Transport type (sse or streamable-http)","enum":["sse","streamable-http"]},"url":{"type":"string","description":"URL of the remote endpoint","format":"uri"},"variables":{"type":"object","description":"URL template variables for this remote endpoint","additionalProperties":{"$ref":"#/components/schemas/ExternalMCPRemoteVariable"}}},"description":"A remote endpoint for an MCP server","required":["url","transport_type"]},"ExternalMCPRemoteHeader":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether this header is required"},"is_secret":{"type":"boolean","description":"Whether this header value should be treated as secret"},"name":{"type":"string","description":"Header name"},"placeholder":{"type":"string","description":"Placeholder value to show when collecting this header"}},"description":"A header requirement for a remote MCP server","required":["name"]},"ExternalMCPRemoteVariable":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"string"},"description":"Allowed values for the variable"},"default":{"type":"string","description":"Default value for the variable"},"description":{"type":"string","description":"Description of the variable"},"is_required":{"type":"boolean","description":"Whether this variable is required"},"is_secret":{"type":"boolean","description":"Whether this variable value should be treated as secret"}},"description":"A URL template variable for a remote MCP server"},"ExternalMCPServer":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the server does"},"icon_url":{"type":"string","description":"URL to the server's icon","format":"uri"},"meta":{"description":"Opaque metadata from the registry"},"organization_mcp_collection_registry_id":{"type":"string","description":"ID of the internal collection registry this server came from","format":"uuid"},"registry_id":{"type":"string","description":"ID of the external MCP registry this server came from","format":"uuid"},"registry_specifier":{"type":"string","description":"Server specifier used to look up in the registry (e.g., 'io.github.user/server')","example":"io.modelcontextprotocol.anonymous/exa"},"remotes":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPRemote"},"description":"Available remote endpoints for the server"},"title":{"type":"string","description":"Display name for the server"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPTool"},"description":"Tools available on the server"},"toolset_id":{"type":"string","description":"ID of the attached toolset when this server is listed from a Collection","format":"uuid"},"version":{"type":"string","description":"Semantic version of the server","example":"1.0.0"}},"description":"An MCP server from an external registry","required":["registry_specifier","version","description"]},"ExternalMCPTool":{"type":"object","properties":{"annotations":{"description":"Annotations for the tool"},"description":{"type":"string","description":"Description of the tool"},"input_schema":{"description":"Input schema for the tool"},"name":{"type":"string","description":"Name of the tool"}}},"ExternalMCPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_external_mcp_id":{"type":"string","description":"The ID of the deployments_external_mcps record"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"oauth_authorization_endpoint":{"type":"string","description":"The OAuth authorization endpoint URL"},"oauth_registration_endpoint":{"type":"string","description":"The OAuth dynamic client registration endpoint URL"},"oauth_scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by the server"},"oauth_token_endpoint":{"type":"string","description":"The OAuth token endpoint URL"},"oauth_version":{"type":"string","description":"OAuth version: '2.1' (MCP OAuth), '2.0' (legacy), or 'none'"},"project_id":{"type":"string","description":"The ID of the project"},"registry_id":{"type":"string","description":"The ID of the MCP registry"},"registry_server_name":{"type":"string","description":"The name of the external MCP server (e.g., exa)"},"registry_specifier":{"type":"string","description":"The specifier of the external MCP server (e.g., 'io.modelcontextprotocol.anonymous/exa')"},"remote_url":{"type":"string","description":"The URL to connect to the MCP server"},"requires_oauth":{"type":"boolean","description":"Whether the external MCP server requires OAuth authentication"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"slug":{"type":"string","description":"The slug used for tool prefixing (e.g., github)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"transport_type":{"type":"string","description":"The transport type used to connect to the MCP server","enum":["streamable-http","sse"]},"type":{"type":"string","description":"Whether or not the tool is a proxy tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A proxy tool that references an external MCP server","required":["deployment_external_mcp_id","deployment_id","registry_specifier","registry_server_name","registry_id","slug","remote_url","transport_type","requires_oauth","oauth_version","created_at","updated_at","id","project_id","name","canonical_name","description","schema","tool_urn"]},"ExternalOAuthServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the external OAuth server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the external OAuth server"},"metadata":{"description":"The metadata for the external OAuth server"},"project_id":{"type":"string","description":"The project ID this external OAuth server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the external OAuth server was last updated.","format":"date-time"}},"required":["id","project_id","slug","metadata","created_at","updated_at"]},"ExternalOAuthServerForm":{"type":"object","properties":{"metadata":{"description":"The metadata for the external OAuth server"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","metadata"]},"FetchOpenAPIv3FromURLForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FetchOpenAPIv3FromURLForm2":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch the OpenAPI document from"}},"required":["url"]},"FilterOption":{"type":"object","properties":{"count":{"type":"integer","description":"Number of events for this option","format":"int64"},"id":{"type":"string","description":"Unique identifier for the option"},"label":{"type":"string","description":"Display label for the option"}},"description":"A single filter option (API key or user)","required":["id","label","count"]},"FunctionEnvironmentVariable":{"type":"object","properties":{"auth_input_type":{"type":"string","description":"Optional value of the function variable comes from a specific auth input"},"description":{"type":"string","description":"Description of the function environment variable"},"name":{"type":"string","description":"The environment variables"}},"required":["name"]},"FunctionResourceDefinition":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the resource.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the resource"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the resource"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"mime_type":{"type":"string","description":"Optional MIME type of the resource"},"name":{"type":"string","description":"The name of the resource"},"project_id":{"type":"string","description":"The ID of the project"},"resource_urn":{"type":"string","description":"The URN of this resource"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"title":{"type":"string","description":"Optional title for the resource"},"updated_at":{"type":"string","description":"The last update date of the resource.","format":"date-time"},"uri":{"type":"string","description":"The URI of the resource"},"variables":{"description":"Variables configuration for the resource"}},"description":"A function resource","required":["deployment_id","function_id","runtime","id","project_id","name","description","uri","resource_urn","created_at","updated_at"]},"FunctionToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"function_id":{"type":"string","description":"The ID of the function"},"id":{"type":"string","description":"The ID of the tool"},"meta":{"type":"object","description":"Meta tags for the tool","additionalProperties":true},"name":{"type":"string","description":"The name of the tool"},"project_id":{"type":"string","description":"The ID of the project"},"runtime":{"type":"string","description":"Runtime environment (e.g., nodejs:24, python:3.12)"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variables":{"description":"Variables configuration for the function"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A function tool","required":["deployment_id","asset_id","function_id","runtime","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"GenerateTitleResponseBody":{"type":"object","properties":{"title":{"type":"string","description":"The generated title"}},"required":["title"]},"GetActiveDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetDeploymentForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the deployment"}},"required":["id"]},"GetDeploymentLogsForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"},"deployment_id":{"type":"string","description":"The ID of the deployment"}},"required":["deployment_id"]},"GetDeploymentLogsResult":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentLogEvent"},"description":"The logs for the deployment"},"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"status":{"type":"string","description":"The status of the deployment"}},"required":["events","status"]},"GetDeploymentResult":{"type":"object","properties":{"cloned_from":{"type":"string","description":"The ID of the deployment that this deployment was cloned from.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"created_at":{"type":"string","description":"The creation date of the deployment.","format":"date-time"},"external_id":{"type":"string","description":"The external ID to refer to the deployment. This can be a git commit hash for example.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"external_mcp_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from external MCP servers.","format":"int64"},"external_mcps":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentExternalMCP"},"description":"The external MCP servers that were deployed."},"external_url":{"type":"string","description":"The upstream URL a deployment can refer to. This can be a github url to a commit hash or pull request."},"functions_assets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentFunctions"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"functions_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from Functions.","format":"int64"},"github_pr":{"type":"string","description":"The github pull request that resulted in the deployment.","example":"1234"},"github_repo":{"type":"string","description":"The github repository in the form of \"owner/repo\".","example":"speakeasyapi/gram"},"github_sha":{"type":"string","description":"The commit hash that triggered the deployment.","example":"f33e693e9e12552043bc0ec5c37f1b8a9e076161"},"id":{"type":"string","description":"The ID to of the deployment.","example":"bc5f4a555e933e6861d12edba4c2d87ef6caf8e6"},"idempotency_key":{"type":"string","description":"A unique identifier that will mitigate against duplicate deployments.","example":"01jqq0ajmb4qh9eppz48dejr2m"},"openapiv3_assets":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIv3DeploymentAsset"},"description":"The IDs, as returned from the assets upload service, to uploaded OpenAPI 3.x documents whose operations will become tool definitions."},"openapiv3_tool_count":{"type":"integer","description":"The number of tools in the deployment generated from OpenAPI documents.","format":"int64"},"organization_id":{"type":"string","description":"The ID of the organization that the deployment belongs to."},"packages":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPackage"},"description":"The packages that were deployed."},"project_id":{"type":"string","description":"The ID of the project that the deployment belongs to."},"status":{"type":"string","description":"The status of the deployment."},"user_id":{"type":"string","description":"The ID of the user that created the deployment."}},"required":["id","created_at","organization_id","project_id","user_id","openapiv3_assets","status","packages","openapiv3_tool_count","functions_tool_count","external_mcp_tool_count"]},"GetHooksSummaryPayload":{"type":"object","properties":{"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions (same as listHooksTraces)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty, includes all types.","example":["mcp","skill"]}},"description":"Payload for getting aggregated hooks metrics","required":["from","to"]},"GetHooksSummaryResult":{"type":"object","properties":{"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/HooksBreakdownRow"},"description":"Cross-dimensional pivot: (user, server, source, tool) x counts"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/HooksServerSummary"},"description":"Aggregated metrics grouped by server"},"skill_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/SkillBreakdownRow"},"description":"Per-user skill breakdown"},"skill_time_series":{"type":"array","items":{"$ref":"#/components/schemas/SkillTimeSeriesPoint"},"description":"Time-bucketed event counts by skill"},"skills":{"type":"array","items":{"$ref":"#/components/schemas/SkillSummary"},"description":"Aggregated metrics grouped by skill"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/HooksTimeSeriesPoint"},"description":"Time-bucketed event counts by server and user"},"total_events":{"type":"integer","description":"Total number of hook events","format":"int64"},"total_sessions":{"type":"integer","description":"Total number of unique sessions","format":"int64"},"users":{"type":"array","items":{"$ref":"#/components/schemas/HooksUserSummary"},"description":"Aggregated metrics grouped by user"}},"description":"Result of hooks summary query","required":["servers","users","skills","total_events","total_sessions","breakdown","time_series","skill_time_series","skill_breakdown"]},"GetInstanceForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"GetInstanceResult":{"type":"object","properties":{"description":{"type":"string","description":"The description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/InstanceMcpServer"},"description":"The MCP servers that are relevant to the toolset"},"name":{"type":"string","description":"The name of the toolset"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The list of prompt templates"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools"}},"required":["name","tools","mcp_servers"]},"GetIntegrationForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the integration to get (refers to a package id)."},"name":{"type":"string","description":"The name of the integration to get (refers to a package name)."}},"description":"Get a third-party integration by ID or name."},"GetIntegrationResult":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"}}},"GetLatestDeploymentResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"GetMcpMetadataResponseBody":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/McpMetadata"}}},"GetMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of metrics summary query","required":["metrics"]},"GetObservabilityOverviewPayload":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Optional API key ID filter"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"Optional external user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"include_time_series":{"type":"boolean","description":"Whether to include time series data (default: true)","default":true},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"toolset_slug":{"type":"string","description":"Optional toolset/MCP server slug filter"},"user_id":{"type":"string","description":"Optional internal user ID filter"}},"description":"Payload for getting observability overview metrics","required":["from","to"]},"GetObservabilityOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ObservabilitySummary"},"interval_seconds":{"type":"integer","description":"The time bucket interval in seconds used for the time series data","format":"int64"},"summary":{"$ref":"#/components/schemas/ObservabilitySummary"},"time_series":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesBucket"},"description":"Time series data points"},"top_tools_by_count":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by call count"},"top_tools_by_failure_rate":{"type":"array","items":{"$ref":"#/components/schemas/ToolMetric"},"description":"Top tools by failure rate"}},"description":"Result of observability overview query","required":["summary","comparison","time_series","top_tools_by_count","top_tools_by_failure_rate","interval_seconds"]},"GetProductFeaturesResponseBody":{"type":"object","properties":{"authz_challenge_logging_enabled":{"type":"boolean","description":"Whether authz challenge logging to ClickHouse is enabled"},"logs_enabled":{"type":"boolean","description":"Whether logging is enabled"},"session_capture_enabled":{"type":"boolean","description":"Whether Claude Code session capture is enabled"},"tool_io_logs_enabled":{"type":"boolean","description":"Whether tool I/O logging is enabled"},"webhooks":{"type":"boolean","description":"Whether webhooks are enabled"}},"required":["logs_enabled","tool_io_logs_enabled","session_capture_enabled","authz_challenge_logging_enabled","webhooks"]},"GetProjectForm":{"type":"object","properties":{"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug"]},"GetProjectMetricsSummaryPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level metrics summary","required":["from","to"]},"GetProjectOverviewPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for getting project-level overview","required":["from","to"]},"GetProjectOverviewResult":{"type":"object","properties":{"comparison":{"$ref":"#/components/schemas/ProjectOverviewSummary"},"metrics_mode":{"type":"string","description":"Indicates whether metrics are session-based or tool-call-based","enum":["session","tool_call"]},"summary":{"$ref":"#/components/schemas/ProjectOverviewSummary"}},"description":"Result of project overview query","required":["summary","comparison","metrics_mode"]},"GetProjectResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"GetPromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"GetSignedAssetURLForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the function asset"}},"required":["asset_id"]},"GetSignedAssetURLResult":{"type":"object","properties":{"url":{"type":"string","description":"The signed URL to access the asset"}},"required":["url"]},"GetUserMetricsSummaryPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook')"},"external_user_id":{"type":"string","description":"External user ID to get metrics for (mutually exclusive with user_id)"},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID to get metrics for (mutually exclusive with external_user_id)"}},"description":"Payload for getting user-level metrics summary","required":["from","to"]},"GetUserMetricsSummaryResult":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/ProjectSummary"}},"description":"Result of user metrics summary query","required":["metrics"]},"HTTPToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"asset_id":{"type":"string","description":"The ID of the asset"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"default_server_url":{"type":"string","description":"The default server URL for the tool"},"deployment_id":{"type":"string","description":"The ID of the deployment"},"description":{"type":"string","description":"Description of the tool"},"http_method":{"type":"string","description":"HTTP method for the request"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"openapiv3_document_id":{"type":"string","description":"The ID of the OpenAPI v3 document"},"openapiv3_operation":{"type":"string","description":"OpenAPI v3 operation"},"package_name":{"type":"string","description":"The name of the source package"},"path":{"type":"string","description":"Path for the request"},"project_id":{"type":"string","description":"The ID of the project"},"response_filter":{"$ref":"#/components/schemas/ResponseFilter"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"security":{"type":"string","description":"Security requirements for the underlying HTTP endpoint"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"summary":{"type":"string","description":"Summary of the tool"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags list for this http tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"An HTTP tool","required":["summary","tags","http_method","path","schema","deployment_id","asset_id","id","project_id","name","canonical_name","description","tool_urn","created_at","updated_at"]},"HeaderInput":{"type":"object","properties":{"description":{"type":"string","description":"Description of the header"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"value":{"type":"string","description":"Static header value (mutually exclusive with value_from_request_header)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through (mutually exclusive with value)"}},"description":"Input for a remote MCP server header","required":["name"]},"HookSourceUsage":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total hook events for this source","format":"int64"},"source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"}},"description":"Hook source usage statistics","required":["source","event_count"]},"HookTraceSummary":{"type":"object","properties":{"block_reason":{"type":"string","description":"Reason set when hook_status is 'blocked' (e.g. shadow-MCP guard rejection)"},"event_source":{"type":"string","description":"Event source (from materialized column)"},"gram_urn":{"type":"string","description":"Gram URN associated with this hook trace"},"hook_source":{"type":"string","description":"Hook source (from attributes.gram.hook.source)"},"hook_status":{"type":"string","description":"Hook execution status","enum":["success","failure","pending","blocked"]},"log_count":{"type":"integer","description":"Total number of logs in this trace","format":"int64"},"skill_name":{"type":"string","description":"Skill name (from materialized column, only for Skill tool)"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from materialized column)"},"tool_source":{"type":"string","description":"Tool call source (from materialized column)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_email":{"type":"string","description":"User email (from attributes.user.email)"}},"description":"Summary information for a hook trace","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"HooksBreakdownRow":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total events for this combination","format":"int64"},"failure_count":{"type":"integer","description":"Number of failures for this combination","format":"int64"},"hook_source":{"type":"string","description":"Hook source (e.g. claude-desktop, cursor)"},"server_name":{"type":"string","description":"Server name ('local' for non-MCP tools)"},"tool_name":{"type":"string","description":"Tool name"},"user_email":{"type":"string","description":"User email address"}},"description":"Cross-dimensional aggregation row: one entry per unique (user, server, hook_source, tool) combination","required":["user_email","server_name","hook_source","tool_name","event_count","failure_count"]},"HooksServerSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this server","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"server_name":{"type":"string","description":"Server name (extracted from tool name, or 'local' for non-MCP tools)"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used for this server","format":"int64"}},"description":"Aggregated hooks metrics for a single server","required":["server_name","event_count","unique_tools","success_count","failure_count","failure_rate"]},"HooksTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of events in this bucket","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed hook events in this bucket","format":"int64"},"server_name":{"type":"string","description":"Server name"},"user_email":{"type":"string","description":"User email address"}},"description":"A single time-series bucket for hooks activity","required":["bucket_start_ns","server_name","user_email","event_count","failure_count"]},"HooksUserSummary":{"type":"object","properties":{"event_count":{"type":"integer","description":"Total number of hook events for this user","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed tool completions (PostToolUseFailure events)","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate as a decimal (0.0 to 1.0)","format":"double"},"success_count":{"type":"integer","description":"Number of successful tool completions (PostToolUse events)","format":"int64"},"unique_tools":{"type":"integer","description":"Number of unique tools used by this user","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Aggregated hooks metrics for a single user","required":["user_email","event_count","unique_tools","success_count","failure_count","failure_rate"]},"InfoResponseBody":{"type":"object","properties":{"active_organization_id":{"type":"string"},"gram_account_type":{"type":"string"},"has_active_subscription":{"type":"boolean","description":"Whether the organization has an active billing subscription"},"is_admin":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationEntry"}},"user_display_name":{"type":"string"},"user_email":{"type":"string"},"user_id":{"type":"string"},"user_photo_url":{"type":"string"},"user_signature":{"type":"string"},"whitelisted":{"type":"boolean","description":"Whether the organization is whitelisted to access the platform"}},"required":["user_id","user_email","is_admin","active_organization_id","organizations","gram_account_type","has_active_subscription","whitelisted"]},"InstanceMcpServer":{"type":"object","properties":{"url":{"type":"string","description":"The address of the MCP server"}},"required":["url"]},"Integration":{"type":"object","properties":{"package_description":{"type":"string"},"package_description_raw":{"type":"string"},"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string","description":"The latest version of the integration"},"version_created_at":{"type":"string","format":"date-time"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationVersion"}}},"required":["package_id","package_name","package_title","package_summary","version","version_created_at","tool_names"]},"IntegrationEntry":{"type":"object","properties":{"package_id":{"type":"string"},"package_image_asset_id":{"type":"string"},"package_keywords":{"type":"array","items":{"type":"string"}},"package_name":{"type":"string"},"package_summary":{"type":"string"},"package_title":{"type":"string"},"package_url":{"type":"string"},"tool_names":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"version_created_at":{"type":"string","format":"date-time"}},"required":["package_id","package_name","version","version_created_at","tool_names"]},"IntegrationVersion":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["version","created_at"]},"Key":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the key.","format":"date-time"},"created_by_user_id":{"type":"string","description":"The ID of the user who created this key"},"id":{"type":"string","description":"The ID of the key"},"key":{"type":"string","description":"The token of the api key (only returned on key creation)"},"key_prefix":{"type":"string","description":"The store prefix of the api key for recognition"},"last_accessed_at":{"type":"string","description":"When the key was last accessed.","format":"date-time"},"name":{"type":"string","description":"The name of the key"},"organization_id":{"type":"string","description":"The organization ID this key belongs to"},"project_id":{"type":"string","description":"The optional project ID this key is scoped to"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"},"updated_at":{"type":"string","description":"When the key was last updated.","format":"date-time"}},"required":["id","organization_id","created_by_user_id","name","key_prefix","scopes","created_at","updated_at"]},"LLMClientUsage":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"client_name":{"type":"string","description":"Client/agent name (e.g., 'cursor', 'claude-code', 'cowork')"}},"description":"Usage breakdown by LLM client/agent","required":["client_name","activity_count"]},"ListAllowedOriginsResult":{"type":"object","properties":{"allowed_origins":{"type":"array","items":{"$ref":"#/components/schemas/AllowedOrigin"},"description":"The list of allowed origins"}},"required":["allowed_origins"]},"ListAssetsResult":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"description":"The list of assets"}},"required":["assets"]},"ListAssistantMemoriesResult":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/AssistantMemory"},"description":"Assistant memories matching the query."},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["memories"]},"ListAssistantsResult":{"type":"object","properties":{"assistants":{"type":"array","items":{"$ref":"#/components/schemas/Assistant"},"description":"Assistants for the current project."}},"required":["assistants"]},"ListAttributeKeysPayload":{"type":"object","properties":{"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing distinct attribute keys available for filtering","required":["from","to"]},"ListAttributeKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"description":"Distinct attribute keys. User attributes are prefixed with @"}},"description":"Result of listing distinct attribute keys","required":["keys"]},"ListAuditLogFacetsForm":{"type":"object","properties":{"project_slug":{"type":"string","description":"Project slug to filter facet values to a specific project."}}},"ListAuditLogFacetsResult":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available action facets"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFacetOption"},"description":"Available actor facets"}},"required":["actors","actions"]},"ListAuditLogsForm":{"type":"object","properties":{"action":{"type":"string","description":"Action to filter audit logs to a specific action."},"actor_id":{"type":"string","description":"Actor ID to filter audit logs to a specific actor."},"cursor":{"type":"string","description":"The cursor for paginating through audit logs."},"project_slug":{"type":"string","description":"Project slug to filter audit logs to a specific project."}}},"ListAuditLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"},"description":"List of audit logs"},"next_cursor":{"type":"string","description":"The cursor to be used for the next page of results."}},"required":["logs"]},"ListCatalogResponseBody":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Pagination cursor for the next page"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListChallengeBucketsResult":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeBucket"},"description":"The challenge buckets."},"total":{"type":"integer","description":"Total number of matching buckets for pagination.","format":"int64"}},"required":["buckets","total"]},"ListChallengesResult":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AuthzChallenge"},"description":"The challenge events."},"total":{"type":"integer","description":"Total number of matching challenges for pagination.","format":"int64"}},"required":["challenges","total"]},"ListChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverview"},"description":"The list of chats"}},"required":["chats"]},"ListChatsWithResolutionsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatOverviewWithResolutions"},"description":"List of chats with resolutions"},"total":{"type":"integer","description":"Total number of chats (before pagination)","format":"int64"}},"description":"Result of listing chats with resolutions","required":["chats","total"]},"ListCustomDomainMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/CustomDomainMcpEndpoint"}}},"description":"Result of listing the MCP endpoints registered under an organization's custom domain.","required":["mcp_endpoints"]},"ListDeploymentForm":{"type":"object","properties":{"cursor":{"type":"string","description":"The cursor to fetch results from"}}},"ListDeploymentResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSummary"},"description":"A list of deployments"},"next_cursor":{"type":"string","description":"The cursor to fetch results from","example":"01jp3f054qc02gbcmpp0qmyzed"}},"required":["items"]},"ListEnvironmentsResult":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}}},"description":"Result type for listing environments","required":["environments"]},"ListFilterOptionsPayload":{"type":"object","properties":{"event_source":{"type":"string","description":"Optional event source filter for the option list"},"filter_type":{"type":"string","description":"Type of filter to list options for","enum":["api_key","user","internal_user","agent"]},"from":{"type":"string","description":"Start time in ISO 8601 format","example":"2025-12-19T10:00:00Z","format":"date-time"},"to":{"type":"string","description":"End time in ISO 8601 format","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for listing filter options","required":["from","to","filter_type"]},"ListFilterOptionsResult":{"type":"object","properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/FilterOption"},"description":"List of filter options"}},"description":"Result of listing filter options","required":["options"]},"ListHooksTracesPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (trace_id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"types_to_include":{"type":"array","items":{"type":"string","enum":["mcp","local","skill"]},"description":"Hook types to include (mcp, local, skill). If empty or not provided, includes all types.","example":["mcp","skill"]}},"description":"Payload for listing hook traces","required":["from","to"]},"ListHooksTracesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"traces":{"type":"array","items":{"$ref":"#/components/schemas/HookTraceSummary"},"description":"List of hook trace summaries"}},"description":"Result of listing hook traces","required":["traces"]},"ListIntegrationsForm":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"string","maxLength":20},"description":"Keywords to filter integrations by"}}},"ListIntegrationsResult":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationEntry"},"description":"List of available third-party integrations"}}},"ListInvitesResult":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"},"description":"Pending invitations for the organization only; accepted, expired, and revoked invitations are omitted."}},"required":["invitations"]},"ListKeysResult":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}}},"required":["keys"]},"ListMcpEndpointsResult":{"type":"object","properties":{"mcp_endpoints":{"type":"array","items":{"$ref":"#/components/schemas/McpEndpoint"}}},"description":"Result type for listing MCP endpoints","required":["mcp_endpoints"]},"ListMcpServersResult":{"type":"object","properties":{"mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/McpServer"}}},"description":"Result type for listing MCP servers","required":["mcp_servers"]},"ListMembersResult":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/AccessMember"},"description":"The members in your organization."}},"required":["members"]},"ListPackagesResult":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"The list of packages"}},"required":["packages"]},"ListPluginsResult":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/Plugin"},"description":"The plugins in the organization."}},"required":["plugins"]},"ListProjectsPayload":{"type":"object","properties":{"apikey_token":{"type":"string"},"organization_id":{"type":"string","description":"The ID of the organization to list projects for"},"session_token":{"type":"string"}},"required":["organization_id"]},"ListProjectsResult":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"},"description":"The list of projects"}},"required":["projects"]},"ListPromptTemplatesResult":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The created prompt template"}},"required":["templates"]},"ListRegistriesResponseBody":{"type":"object","properties":{"registries":{"type":"array","items":{"$ref":"#/components/schemas/MCPRegistry"},"description":"List of MCP registries"}},"required":["registries"]},"ListRemoteSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_clients.","required":["items"]},"ListRemoteSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_session_issuers.","required":["items"]},"ListRemoteSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RemoteSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing remote_sessions.","required":["items"]},"ListResourcesResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The list of resources"}},"required":["resources"]},"ListResponseBody":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/MCPCollection"},"description":"List of collections"}},"required":["collections"]},"ListRiskPoliciesResult":{"type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/RiskPolicy"},"description":"The list of risk policies."}},"required":["policies"]},"ListRiskResultsByChatResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/RiskChatSummary"},"description":"Risk results grouped by chat."},"next_cursor":{"type":"string","description":"Cursor for the next page of results."}},"required":["chats"]},"ListRiskResultsForAgentResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResultRedacted"},"description":"The list of risk results with match content redacted to opaque fingerprints."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRiskResultsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for the next page of results."},"results":{"type":"array","items":{"$ref":"#/components/schemas/RiskResult"},"description":"The list of risk results."},"total_count":{"type":"integer","description":"Total number of findings across all enabled policies.","format":"int64"}},"required":["results","total_count"]},"ListRoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."},"sub_scopes":{"type":"array","items":{"type":"string","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"description":"The inherited scopes the primary scope grants."}},"required":["scope"]},"ListRolesResult":{"type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"description":"The roles in your organization."}},"required":["roles"]},"ListScopesResult":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ScopeDefinition"},"description":"The scopes available in access control."}},"required":["scopes"]},"ListServersResponseBody":{"type":"object","properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPServer"},"description":"List of available MCP servers"}},"required":["servers"]},"ListServersResult":{"type":"object","properties":{"remote_mcp_servers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServer"}}},"description":"Result type for listing remote MCP servers","required":["remote_mcp_servers"]},"ListShadowMCPApprovalsResult":{"type":"object","properties":{"approvals":{"type":"array","items":{"$ref":"#/components/schemas/ShadowMCPApproval"},"description":"The approved shadow-MCP servers for the policy (URL- or command-keyed)."}},"required":["approvals"]},"ListSlackAppsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SlackAppResult"},"description":"List of Slack apps"}},"required":["items"]},"ListToolsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"The cursor to fetch results from"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The list of tools (polymorphic union of HTTP tools and prompt templates)"}},"required":["tools"]},"ListToolsetSummariesResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetSummary"},"description":"The list of toolset summaries"}},"required":["toolsets"]},"ListToolsetsResult":{"type":"object","properties":{"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/ToolsetEntry"},"description":"The list of toolsets"}},"required":["toolsets"]},"ListTriggerDefinitionsResult":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/components/schemas/TriggerDefinition"},"description":"The available trigger definitions."}},"required":["definitions"]},"ListTriggerInstancesResult":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/components/schemas/TriggerInstance"},"description":"The trigger instances for the current project."}},"required":["triggers"]},"ListUserGrantsResult":{"type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/ListRoleGrant"},"description":"The user's effective grants in this organization."}},"required":["grants"]},"ListUserSessionClientsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionClient"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_clients.","required":["items"]},"ListUserSessionConsentsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionConsent"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_consents.","required":["items"]},"ListUserSessionIssuersResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSessionIssuer"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_session_issuers.","required":["items"]},"ListUserSessionsResult":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSession"}},"next_cursor":{"type":"string","description":"Cursor for the next page; empty when exhausted."}},"description":"Result type for listing user_sessions.","required":["items"]},"ListUsersResult":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"},"description":"Users linked to the organization in Gram."}},"required":["users"]},"ListVariationsResult":{"type":"object","properties":{"variations":{"type":"array","items":{"$ref":"#/components/schemas/ToolVariation"}}},"required":["variations"]},"ListVersionsForm":{"type":"object","properties":{"name":{"type":"string","description":"The name of the package"}},"required":["name"]},"ListVersionsResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}}},"required":["package","versions"]},"LogFilter":{"type":"object","properties":{"operator":{"type":"string","description":"Comparison operator","default":"eq","enum":["eq","not_eq","contains","exists","not_exists","in"]},"path":{"type":"string","description":"Attribute path. Use @ prefix for custom attributes (e.g. '@user.region'), or bare path for system attributes (e.g. 'http.route').","example":"@user.region","pattern":"^@?[a-zA-Z_][a-zA-Z0-9_]*(\\.[a-zA-Z_][a-zA-Z0-9_]*)*$","minLength":1,"maxLength":256},"values":{"type":"array","items":{"type":"string"},"description":"Values to compare against. Pass one value for single-value operators (eq, not_eq, contains) and multiple for 'in'. Ignored for 'exists' and 'not_exists'.","maxItems":256}},"description":"A single filter condition for a log search query.","required":["path"]},"MCPCollection":{"type":"object","properties":{"description":{"type":"string","description":"Description of the collection"},"id":{"type":"string","description":"Collection ID","format":"uuid"},"mcp_registry_namespace":{"type":"string","description":"Registry namespace"},"name":{"type":"string","description":"Display name for the collection"},"slug":{"type":"string","description":"URL-friendly identifier"},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"description":"An MCP collection within an organization","required":["id","name","slug","visibility"]},"MCPRegistry":{"type":"object","properties":{"id":{"type":"string","description":"Registry ID","format":"uuid"},"name":{"type":"string","description":"Display name for the registry"},"url":{"type":"string","description":"URL of the registry"}},"description":"An MCP registry","required":["id","name","url"]},"McpEndpoint":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP endpoint was created","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain this endpoint slug is registered under. Null for platform-domain endpoints.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"project_id":{"type":"string","description":"The project ID this MCP endpoint belongs to","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128},"updated_at":{"type":"string","description":"When the MCP endpoint was last updated","format":"date-time"}},"description":"An MCP endpoint: a url-friendly slug identifier that addresses an MCP server.","required":["id","project_id","mcp_server_id","slug","created_at","updated_at"]},"McpEnvironmentConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"When the config was created","format":"date-time"},"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"id":{"type":"string","description":"The ID of the environment config"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"updated_at":{"type":"string","description":"When the config was last updated","format":"date-time"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Represents an environment variable configured for an MCP server.","required":["id","variable_name","provided_by","created_at","updated_at"]},"McpEnvironmentConfigInput":{"type":"object","properties":{"header_display_name":{"type":"string","description":"Custom display name for the variable in MCP headers"},"provided_by":{"type":"string","description":"How the variable is provided: 'user', 'system', or 'none'"},"variable_name":{"type":"string","description":"The name of the environment variable"}},"description":"Input for configuring an environment variable for an MCP server.","required":["variable_name","provided_by"]},"McpExport":{"type":"object","properties":{"authentication":{"$ref":"#/components/schemas/McpExportAuthentication"},"description":{"type":"string","description":"Description of the MCP server"},"documentation_url":{"type":"string","description":"Link to external documentation"},"instructions":{"type":"string","description":"Server instructions for users"},"logo_url":{"type":"string","description":"URL to the server logo"},"name":{"type":"string","description":"The MCP server name"},"server_url":{"type":"string","description":"The MCP server URL"},"slug":{"type":"string","description":"The MCP server slug"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/McpExportTool"},"description":"Available tools on this MCP server"}},"description":"Complete MCP server export for documentation and integration","required":["name","slug","server_url","tools","authentication"]},"McpExportAuthHeader":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name (e.g., API Key)"},"name":{"type":"string","description":"The HTTP header name (e.g., Authorization)"}},"description":"An authentication header required by the MCP server","required":["name","display_name"]},"McpExportAuthentication":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/McpExportAuthHeader"},"description":"Required authentication headers"},"required":{"type":"boolean","description":"Whether authentication is required"}},"description":"Authentication requirements for the MCP server","required":["required","headers"]},"McpExportTool":{"type":"object","properties":{"description":{"type":"string","description":"Description of what the tool does"},"input_schema":{"description":"JSON Schema for the tool's input parameters"},"name":{"type":"string","description":"The tool name"}},"description":"A tool definition in the MCP export","required":["name","description","input_schema"]},"McpMetadata":{"type":"object","properties":{"created_at":{"type":"string","description":"When the metadata entry was created","format":"date-time"},"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfig"},"description":"The list of environment variables configured for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page","format":"uri"},"id":{"type":"string","description":"The ID of the metadata record"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo","format":"uuid"},"toolset_id":{"type":"string","description":"The toolset associated with this install page metadata","format":"uuid"},"updated_at":{"type":"string","description":"When the metadata entry was last updated","format":"date-time"}},"description":"Metadata used to configure the MCP install page.","required":["id","toolset_id","created_at","updated_at"]},"McpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the MCP server was created","format":"date-time"},"environment_id":{"type":"string","description":"The ID of the environment associated with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server"},"project_id":{"type":"string","description":"The project ID this MCP server belongs to","format":"uuid"},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server used as the backend","format":"uuid"},"slug":{"type":"string","description":"A URL-safe, project-unique slug derived server-side from the name and ID"},"toolset_id":{"type":"string","description":"The ID of the toolset used as the backend","format":"uuid"},"updated_at":{"type":"string","description":"When the MCP server was last updated","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication for this server, if any.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"An MCP server configuration: authentication, environment, and backend selection for an MCP server.","required":["id","project_id","visibility","created_at","updated_at"]},"ModelUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Number of times used","format":"int64"},"name":{"type":"string","description":"Model name"}},"description":"Model usage statistics","required":["name","count"]},"NotModified":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]},"OAuthEnablementMetadata":{"type":"object","properties":{"oauth2_security_count":{"type":"integer","description":"Count of security variables that are OAuth2 supported","format":"int64"}},"required":["oauth2_security_count"]},"OAuthProxyProvider":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"created_at":{"type":"string","description":"When the OAuth proxy provider was created.","format":"date-time"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"The grant types supported by this provider"},"id":{"type":"string","description":"The ID of the OAuth proxy provider"},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"The OAuth scopes supported by this provider"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"The token endpoint auth methods supported by this provider"},"updated_at":{"type":"string","description":"When the OAuth proxy provider was last updated.","format":"date-time"}},"required":["id","slug","provider_type","authorization_endpoint","token_endpoint","created_at","updated_at"]},"OAuthProxyServer":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"created_at":{"type":"string","description":"When the OAuth proxy server was created.","format":"date-time"},"id":{"type":"string","description":"The ID of the OAuth proxy server"},"oauth_proxy_providers":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProxyProvider"},"description":"The OAuth proxy providers for this server"},"project_id":{"type":"string","description":"The project ID this OAuth proxy server belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"When the OAuth proxy server was last updated.","format":"date-time"}},"required":["id","project_id","slug","created_at","updated_at"]},"OAuthProxyServerForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"provider_type":{"type":"string","description":"The type of OAuth provider","enum":["custom","gram"]},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (client_secret_basic or client_secret_post)"}},"required":["slug","provider_type"]},"OAuthProxyServerUpdateForm":{"type":"object","properties":{"audience":{"type":"string","description":"The audience parameter to send to the upstream OAuth provider"},"authorization_endpoint":{"type":"string","description":"The authorization endpoint URL"},"environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"OAuth scopes to request (omit = no change, empty array = clear)"},"token_endpoint":{"type":"string","description":"The token endpoint URL"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Auth methods (omit = no change, empty array = clear)"}}},"OTELAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL log attribute with key and typed value","required":["key"]},"OTELAttributeValue":{"type":"object","properties":{"arrayValue":{"description":"Array value (passed through)"},"boolValue":{"type":"boolean","description":"Boolean value"},"bytesValue":{"type":"string","description":"Bytes value (base64-encoded per OTLP/JSON)"},"doubleValue":{"type":"number","description":"Double value","format":"double"},"intValue":{"description":"Integer value (string-encoded per OTLP/JSON, or raw number)"},"kvlistValue":{"description":"Key-value list value (passed through)"},"stringValue":{"type":"string","description":"String value"}},"description":"OTEL attribute value - any of the OTLP/JSON value kinds"},"OTELLogBody":{"type":"object","properties":{"stringValue":{"type":"string","description":"String body value"}},"description":"OTEL log body"},"OTELLogRecord":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Log attributes"},"body":{"$ref":"#/components/schemas/OTELLogBody"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"},"observedTimeUnixNano":{"type":"string","description":"Observed timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds since Unix epoch"}},"description":"Individual OTEL log record"},"OTELLogsPayload":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceLog"},"description":"Array of resource logs"}},"description":"OTEL logs export payload"},"OTELMetric":{"type":"object","properties":{"description":{"type":"string","description":"Metric description"},"exponentialHistogram":{"description":"ExponentialHistogram metric data (passed through)"},"gauge":{"description":"Gauge metric data (passed through)"},"histogram":{"description":"Histogram metric data (passed through)"},"name":{"type":"string","description":"Metric name"},"sum":{"$ref":"#/components/schemas/OTELSum"},"summary":{"description":"Summary metric data (passed through)"},"unit":{"type":"string","description":"Metric unit"}},"description":"OTEL metric"},"OTELMetricsPayload":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceMetrics"},"description":"Array of resource metrics"}},"description":"OTEL metrics export payload"},"OTELNumberDataPoint":{"type":"object","properties":{"asDouble":{"type":"number","description":"Value as double","format":"double"},"asInt":{"description":"Value as integer (string-encoded per OTLP/JSON, or raw number)"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELAttribute"},"description":"Data point attributes"},"startTimeUnixNano":{"type":"string","description":"Start timestamp in nanoseconds"},"timeUnixNano":{"type":"string","description":"Timestamp in nanoseconds"}},"description":"OTEL number data point"},"OTELResource":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/components/schemas/OTELResourceAttribute"},"description":"Resource attributes"},"droppedAttributesCount":{"type":"integer","description":"Number of dropped attributes","format":"int64"}},"description":"OTEL resource information"},"OTELResourceAttribute":{"type":"object","properties":{"key":{"type":"string","description":"Resource attribute key"},"value":{"$ref":"#/components/schemas/OTELAttributeValue"}},"description":"OTEL resource attribute","required":["key"]},"OTELResourceLog":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeLogs":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeLog"},"description":"Array of scope logs"}},"description":"OTEL resource logs container"},"OTELResourceMetrics":{"type":"object","properties":{"resource":{"$ref":"#/components/schemas/OTELResource"},"scopeMetrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELScopeMetrics"},"description":"Array of scope metrics"}},"description":"OTEL resource metrics container"},"OTELScope":{"type":"object","properties":{"name":{"type":"string","description":"Scope name"},"version":{"type":"string","description":"Scope version"}},"description":"OTEL instrumentation scope"},"OTELScopeLog":{"type":"object","properties":{"logRecords":{"type":"array","items":{"$ref":"#/components/schemas/OTELLogRecord"},"description":"Array of log records"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope logs container"},"OTELScopeMetrics":{"type":"object","properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/OTELMetric"},"description":"Array of metrics"},"scope":{"$ref":"#/components/schemas/OTELScope"}},"description":"OTEL scope metrics container"},"OTELSum":{"type":"object","properties":{"aggregationTemporality":{"description":"Aggregation temporality (number or enum string)"},"dataPoints":{"type":"array","items":{"$ref":"#/components/schemas/OTELNumberDataPoint"},"description":"Data points"},"isMonotonic":{"type":"boolean","description":"Whether the sum is monotonic"}},"description":"OTEL sum metric"},"ObservabilitySummary":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"avg_resolution_time_ms":{"type":"number","description":"Average time to resolution in milliseconds","format":"double"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","avg_session_duration_ms","avg_resolution_time_ms","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_latency_ms"]},"OpenAPIv3DeploymentAsset":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the uploaded asset."},"id":{"type":"string","description":"The ID of the deployment asset."},"name":{"type":"string","description":"The name to give the document as it will be displayed in UIs."},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","asset_id","name","slug"]},"Organization":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"The creation date of the organization.","format":"date-time"},"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the organization.","format":"date-time"},"webhooks_enabled":{"type":"boolean","description":"Whether webhooks are enabled for the organization"},"webhooks_onboarded":{"type":"boolean","description":"Whether webhooks support is initialized for the organization"}},"required":["id","name","slug","account_type","webhooks_onboarded","webhooks_enabled","created_at","updated_at"]},"OrganizationEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEntry"}},"slug":{"type":"string"},"user_workspace_slugs":{"type":"array","items":{"type":"string"}}},"required":["id","name","slug","projects"]},"OrganizationInvitation":{"type":"object","properties":{"accepted_at":{"type":"string","description":"When the invitation was accepted.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"Invitee email address."},"expires_at":{"type":"string","description":"When the invitation expires.","format":"date-time"},"id":{"type":"string","description":"WorkOS invitation ID."},"inviter_user_id":{"type":"string","description":"Gram user ID of the inviter, when known."},"revoked_at":{"type":"string","description":"When the invitation was revoked.","format":"date-time"},"role_slug":{"type":"string","description":"WorkOS role slug assigned when the invite is accepted."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]},"updated_at":{"type":"string","format":"date-time"}},"required":["id","email","state","created_at","updated_at"]},"OrganizationInvitationAccept":{"type":"object","properties":{"accept_invitation_url":{"type":"string","description":"URL to complete acceptance in WorkOS (may be empty when not actionable)."},"email":{"type":"string","description":"Invitee email address."},"organization_name":{"type":"string","description":"Gram organization display name when the org is linked in Gram; empty if unknown."},"state":{"type":"string","description":"Invitation lifecycle state.","enum":["pending","accepted","expired","revoked"]}},"required":["email","state","organization_name","accept_invitation_url"]},"OrganizationUser":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","description":"User email address."},"id":{"type":"string","description":"Gram relationship row ID."},"last_login":{"type":"string","description":"Timestamp of the user's most recent login.","format":"date-time"},"name":{"type":"string","description":"User display name."},"organization_id":{"type":"string","description":"Gram organization ID."},"photo_url":{"type":"string","description":"User photo URL."},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","description":"Gram user ID."},"workos_membership_id":{"type":"string","description":"WorkOS organization membership ID when known."}},"required":["id","organization_id","user_id","name","email","created_at","updated_at"]},"OtelForwardingConfig":{"type":"object","properties":{"created_at":{"type":"string","description":"ISO 8601 timestamp when the config was created. Omitted when no config is set.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether forwarding is currently active."},"endpoint_url":{"type":"string","description":"URL each OTEL payload is POSTed to. Empty string when no config is set."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeader"},"description":"Headers configured for this endpoint. Values are never returned."},"id":{"type":"string","description":"Config ID. Omitted when no config is set for the organization."},"organization_id":{"type":"string","description":"Organization the config belongs to."},"updated_at":{"type":"string","description":"ISO 8601 timestamp of the most recent change. Omitted when no config is set.","format":"date-time"}},"description":"Per-organization config that controls forwarding of OTEL payloads received on the hooks endpoints to a customer-owned URL. When no config is set, id/created_at/updated_at are omitted and enabled defaults to false.","required":["organization_id","endpoint_url","enabled","headers"]},"OtelForwardingHeader":{"type":"object","properties":{"has_value":{"type":"boolean","description":"Whether a non-empty value is currently stored for this header. Always false on write-only operations."},"name":{"type":"string","description":"Header name."}},"description":"HTTP header forwarded with each OTEL payload.","required":["name","has_value"]},"OtelForwardingHeaderInput":{"type":"object","properties":{"name":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value. Stored encrypted at rest; never returned on reads."}},"description":"HTTP header value provided when upserting a forwarding config.","required":["name","value"]},"Package":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package","format":"date-time"},"deleted_at":{"type":"string","description":"The deletion date of the package","format":"date-time"},"description":{"type":"string","description":"The description of the package. This contains HTML content."},"description_raw":{"type":"string","description":"The unsanitized, user-supplied description of the package. Limited markdown syntax is supported."},"id":{"type":"string","description":"The ID of the package"},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package"},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package"},"latest_version":{"type":"string","description":"The latest version of the package"},"name":{"type":"string","description":"The name of the package"},"organization_id":{"type":"string","description":"The ID of the organization that owns the package"},"project_id":{"type":"string","description":"The ID of the project that owns the package"},"summary":{"type":"string","description":"The summary of the package"},"title":{"type":"string","description":"The title of the package"},"updated_at":{"type":"string","description":"The last update date of the package","format":"date-time"},"url":{"type":"string","description":"External URL for the package owner"}},"required":["id","name","project_id","organization_id","created_at","updated_at"]},"PackageVersion":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the package version","format":"date-time"},"deployment_id":{"type":"string","description":"The ID of the deployment that the version belongs to"},"id":{"type":"string","description":"The ID of the package version"},"package_id":{"type":"string","description":"The ID of the package that the version belongs to"},"semver":{"type":"string","description":"The semantic version value"},"visibility":{"type":"string","description":"The visibility of the package version"}},"required":["id","package_id","deployment_id","visibility","semver","created_at"]},"PeriodUsage":{"type":"object","properties":{"actual_enabled_server_count":{"type":"integer","description":"The number of servers enabled at the time of the request","format":"int64"},"credits":{"type":"integer","description":"The number of credits used","format":"int64"},"has_active_subscription":{"type":"boolean","description":"Whether the project has an active subscription"},"included_credits":{"type":"integer","description":"The number of credits included in the tier","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"servers":{"type":"integer","description":"The number of servers used, according to the Polar meter","format":"int64"},"tool_calls":{"type":"integer","description":"The number of tool calls used","format":"int64"}},"required":["tool_calls","included_tool_calls","servers","included_servers","actual_enabled_server_count","credits","included_credits","has_active_subscription"]},"PlatformToolDefinition":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"owner_id":{"type":"string","description":"Optional owning entity ID"},"owner_kind":{"type":"string","description":"The entity kind that owns this tool's lifecycle"},"project_id":{"type":"string","description":"The ID of the project"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"source_slug":{"type":"string","description":"The backing platform tool source (for example: logs)"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A platform-owned tool served directly by the platform","required":["source_slug","id","project_id","name","canonical_name","description","schema","tool_urn","created_at","updated_at"]},"Plugin":{"type":"object","properties":{"assignment_count":{"type":"integer","description":"Number of role/user assignments.","format":"int64"},"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"Role/user assignments."},"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Optional description."},"id":{"type":"string","description":"Unique plugin identifier.","format":"uuid"},"name":{"type":"string","description":"Display name."},"server_count":{"type":"integer","description":"Number of active servers in this plugin.","format":"int64"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/PluginServer"},"description":"Servers included in this plugin."},"slug":{"type":"string","description":"URL-safe identifier, unique per org."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","created_at","updated_at"]},"PluginAssignment":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"Unique assignment identifier.","format":"uuid"},"principal_urn":{"type":"string","description":"Principal URN (e.g. role:engineering, user:id, or *)."}},"required":["id","principal_urn","created_at"]},"PluginServer":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string","description":"Display name shown in generated plugin config."},"id":{"type":"string","description":"Unique plugin server identifier.","format":"uuid"},"policy":{"type":"string","description":"Whether this server is required or optional.","enum":["required","optional"]},"sort_order":{"type":"integer","description":"Ordering within the plugin.","format":"int32"},"toolset_id":{"type":"string","description":"Gram toolset ID.","format":"uuid"}},"required":["id","toolset_id","display_name","policy","sort_order","created_at"]},"Project":{"type":"object","properties":{"created_at":{"type":"string","description":"The creation date of the project.","format":"date-time"},"id":{"type":"string","description":"The ID of the project"},"logo_asset_id":{"type":"string","description":"The ID of the logo asset for the project"},"name":{"type":"string","description":"The name of the project"},"organization_id":{"type":"string","description":"The ID of the organization that owns the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"updated_at":{"type":"string","description":"The last update date of the project.","format":"date-time"}},"required":["id","name","slug","organization_id","created_at","updated_at"]},"ProjectEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name","slug"]},"ProjectOverviewSummary":{"type":"object","properties":{"active_servers_count":{"type":"integer","description":"Number of MCP servers with at least one tool call in the time period","format":"int64"},"active_users_count":{"type":"integer","description":"Number of unique users with activity in the time period","format":"int64"},"failed_chats":{"type":"integer","description":"Number of failed chat sessions","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Number of failed tool calls","format":"int64"},"llm_client_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/LLMClientUsage"},"description":"Breakdown of messages/activity by LLM client/agent"},"resolved_chats":{"type":"integer","description":"Number of resolved chat sessions","format":"int64"},"top_servers":{"type":"array","items":{"$ref":"#/components/schemas/TopServer"},"description":"Top 10 MCP servers by tool call count"},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/TopUser"},"description":"Top 10 users by activity (# of messages or tool calls depending on metrics_mode)"},"total_chats":{"type":"integer","description":"Total number of chat sessions","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated project-level summary metrics for a time period","required":["total_chats","resolved_chats","failed_chats","total_tool_calls","failed_tool_calls","active_servers_count","active_users_count","top_users","top_servers","llm_client_breakdown"]},"ProjectSummary":{"type":"object","properties":{"avg_chat_duration_ms":{"type":"number","description":"Average chat request duration in milliseconds","format":"double"},"avg_chat_resolution_score":{"type":"number","description":"Average chat resolution score (0-100)","format":"double"},"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"avg_tool_duration_ms":{"type":"number","description":"Average tool call duration in milliseconds","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"chat_resolution_abandoned":{"type":"integer","description":"Chats abandoned by user","format":"int64"},"chat_resolution_failure":{"type":"integer","description":"Chats that failed to resolve","format":"int64"},"chat_resolution_partial":{"type":"integer","description":"Chats partially resolved","format":"int64"},"chat_resolution_success":{"type":"integer","description":"Chats resolved successfully","format":"int64"},"distinct_models":{"type":"integer","description":"Number of distinct models used (project scope only)","format":"int64"},"distinct_providers":{"type":"integer","description":"Number of distinct providers used (project scope only)","format":"int64"},"finish_reason_stop":{"type":"integer","description":"Requests that completed naturally","format":"int64"},"finish_reason_tool_calls":{"type":"integer","description":"Requests that resulted in tool calls","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"models":{"type":"array","items":{"$ref":"#/components/schemas/ModelUsage"},"description":"List of models used with call counts"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"List of tools used with success/failure counts"},"total_chat_requests":{"type":"integer","description":"Total number of chat requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions (project scope only)","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Aggregated metrics","required":["first_seen_unix_nano","last_seen_unix_nano","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_chat_requests","avg_chat_duration_ms","finish_reason_stop","finish_reason_tool_calls","total_tool_calls","tool_call_success","tool_call_failure","avg_tool_duration_ms","chat_resolution_success","chat_resolution_failure","chat_resolution_partial","chat_resolution_abandoned","avg_chat_resolution_score","total_chats","distinct_models","distinct_providers","models","tools"]},"PromptTemplate":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"canonical":{"$ref":"#/components/schemas/CanonicalToolAttributes"},"canonical_name":{"type":"string","description":"The canonical name of the tool. Will be the same as the name if there is no variation."},"confirm":{"type":"string","description":"Confirmation mode for the tool"},"confirm_prompt":{"type":"string","description":"Prompt for the confirmation"},"created_at":{"type":"string","description":"The creation date of the tool.","format":"date-time"},"description":{"type":"string","description":"Description of the tool"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"history_id":{"type":"string","description":"The revision tree ID for the prompt template"},"id":{"type":"string","description":"The ID of the tool"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the tool"},"predecessor_id":{"type":"string","description":"The previous version of the prompt template to use as predecessor"},"project_id":{"type":"string","description":"The ID of the project"},"prompt":{"type":"string","description":"The template content"},"schema":{"type":"string","description":"JSON schema for the request"},"schema_version":{"type":"string","description":"Version of the schema"},"summarizer":{"type":"string","description":"Summarizer for the tool"},"tool_urn":{"type":"string","description":"The URN of this tool"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20},"updated_at":{"type":"string","description":"The last update date of the tool.","format":"date-time"},"variation":{"$ref":"#/components/schemas/ToolVariation"}},"description":"A prompt template","required":["id","history_id","name","prompt","engine","kind","tools_hint","tool_urn","created_at","updated_at","project_id","canonical_name","description","schema"]},"PromptTemplateEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the prompt template"},"kind":{"type":"string","description":"The kind of the prompt template"},"name":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","name"]},"PublishPackageForm":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The deployment ID to associate with the package version"},"name":{"type":"string","description":"The name of the package"},"version":{"type":"string","description":"The new semantic version of the package to publish"},"visibility":{"type":"string","description":"The visibility of the package version","enum":["public","private"]}},"required":["name","version","deployment_id","visibility"]},"PublishPackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"},"version":{"$ref":"#/components/schemas/PackageVersion"}},"required":["package","version"]},"PublishPluginsRequestBody":{"type":"object","properties":{"github_usernames":{"type":"array","items":{"type":"string"},"description":"GitHub usernames to add as collaborators on the repo."}}},"PublishPluginsResult":{"type":"object","properties":{"repo_url":{"type":"string","description":"The URL of the published GitHub repository."}},"required":["repo_url"]},"PublishStatusResult":{"type":"object","properties":{"configured":{"type":"boolean","description":"Whether GitHub publishing is configured on the server."},"connected":{"type":"boolean","description":"Whether this project has a GitHub connection."},"marketplace_url":{"type":"string","description":"Git-based Claude Code marketplace URL — the value to pass to `/plugin marketplace add` or set as the source URL in `extraKnownMarketplaces`. Present once a marketplace token has been minted, which happens automatically on the first publish."},"repo_name":{"type":"string","description":"GitHub repo name, if connected."},"repo_owner":{"type":"string","description":"GitHub repo owner, if connected."},"repo_url":{"type":"string","description":"Full GitHub repository URL, if connected."}},"required":["configured","connected"]},"RBACStatus":{"type":"object","properties":{"rbac_enabled":{"type":"boolean","description":"Whether RBAC enforcement is currently enabled for this organization."}},"required":["rbac_enabled"]},"RedeployRequestBody":{"type":"object","properties":{"deployment_id":{"type":"string","description":"The ID of the deployment to redeploy."}},"required":["deployment_id"]},"RedeployResult":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"}}},"RegisterRequestBody":{"type":"object","properties":{"org_name":{"type":"string","description":"The name of the org to register"}},"required":["org_name"]},"RemoteMcpServer":{"type":"object","properties":{"created_at":{"type":"string","description":"When the remote MCP server was created","format":"date-time"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/RemoteMcpServerHeader"},"description":"Headers configured for this remote MCP server"},"id":{"type":"string","description":"The ID of the remote MCP server","format":"uuid"},"name":{"type":"string","description":"Optional human-readable name for the remote MCP server"},"project_id":{"type":"string","description":"The project ID this remote MCP server belongs to","format":"uuid"},"slug":{"type":"string","description":"URL-friendly slug derived from the URL and ID."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"updated_at":{"type":"string","description":"When the remote MCP server was last updated","format":"date-time"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"A remote MCP server configuration","required":["id","project_id","url","transport_type","headers","created_at","updated_at"]},"RemoteMcpServerHeader":{"type":"object","properties":{"created_at":{"type":"string","description":"When the header was created","format":"date-time"},"description":{"type":"string","description":"Description of the header"},"id":{"type":"string","description":"The ID of the header","format":"uuid"},"is_required":{"type":"boolean","description":"Whether the header is required"},"is_secret":{"type":"boolean","description":"Whether the header value is a secret"},"name":{"type":"string","description":"The header name"},"updated_at":{"type":"string","description":"When the header was last updated","format":"date-time"},"value":{"type":"string","description":"The header value (redacted if secret)"},"value_from_request_header":{"type":"string","description":"Name of the inbound request header to pass through"}},"description":"A header configured for a remote MCP server","required":["id","name","is_required","is_secret","created_at","updated_at"]},"RemoteSession":{"type":"object","properties":{"access_expires_at":{"type":"string","description":"Upstream access-token expiry. Independent of refresh_expires_at.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session id.","format":"uuid"},"refresh_expires_at":{"type":"string","description":"Upstream refresh-token expiry. Null when the session has no refresh token.","format":"date-time"},"remote_session_client_id":{"type":"string","description":"The remote_session_client this session was minted against.","format":"uuid"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes held by this session."},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this session is bound to.","format":"uuid"}},"description":"A remote_session record — Gram's upstream OAuth session for a (principal, remote_session_client) pair. access_token_encrypted and refresh_token_encrypted are never returned.","required":["id","subject_urn","user_session_issuer_id","remote_session_client_id","access_expires_at","scopes","created_at","updated_at"]},"RemoteSessionClient":{"type":"object","properties":{"audience":{"type":"string","description":"Upstream OAuth audience sent on the authorize redirect and token exchange. Null omits the audience parameter."},"client_id":{"type":"string","description":"The client_id used to identify this client at the issuer's token and authorization endpoints."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"remote_session_issuer_id":{"type":"string","description":"The owning remote_session_issuer id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string"},"description":"Explicit upstream OAuth scopes the dance requests for this client. Null falls back to the issuer's scopes_supported."},"token_endpoint_auth_method":{"type":"string","description":"How the client authenticates at the issuer's token endpoint. Null resolves to client_secret_basic at runtime.","enum":["client_secret_basic","client_secret_post"]},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer this client is paired with.","format":"uuid"}},"description":"A remote_session_client record. client_secret_encrypted is never returned.","required":["id","project_id","remote_session_issuer_id","user_session_issuer_id","client_id","client_id_issued_at","created_at","updated_at"]},"RemoteSessionIssuer":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"created_at":{"type":"string","format":"date-time"},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Project-unique slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"updated_at":{"type":"string","format":"date-time"}},"description":"A remote_session_issuer record — upstream Authorization Server identity that Gram speaks OAuth to.","required":["id","project_id","slug","issuer","oidc","passthrough","created_at","updated_at"]},"RemoteSessionIssuerDraft":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"discovery_warnings":{"type":"array","items":{"type":"string"},"description":"Warnings describing any RFC 8414 deviations encountered during discovery."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI; null when not advertised."},"oidc":{"type":"boolean","description":"When true, may unlock OIDC-aware behaviour."},"passthrough":{"type":"boolean","description":"When true, the MCP client registers and transacts directly with this issuer."},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint; null for issuers without DCR."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"A draft remote_session_issuer returned by discover. Same shape as RemoteSessionIssuer minus id/project_id/timestamps, plus discovery_warnings describing any RFC 8414 deviations.","required":["issuer","oidc","passthrough","discovery_warnings"]},"RenderTemplateByIDRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true}},"required":["arguments"]},"RenderTemplateRequestBody":{"type":"object","properties":{"arguments":{"type":"object","description":"The input data to render the template with","additionalProperties":true},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"prompt":{"type":"string","description":"The template content to render"}},"required":["prompt","arguments","engine","kind"]},"RenderTemplateResult":{"type":"object","properties":{"prompt":{"type":"string","description":"The rendered prompt"}},"required":["prompt"]},"ResolveChallengeForm":{"type":"object","properties":{"challenge_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the challenges in ClickHouse to resolve."},"principal_urn":{"type":"string","description":"Principal that was denied."},"resolution_type":{"type":"string","description":"How the challenge is being resolved.","enum":["role_assigned","dismissed"]},"resource_id":{"type":"string","description":"Resource ID from the challenge."},"resource_kind":{"type":"string","description":"Resource kind from the challenge."},"role_slug":{"type":"string","description":"Role slug to assign (required when resolution_type=role_assigned)."},"scope":{"type":"string","description":"Scope that was denied."}},"required":["challenge_ids","principal_urn","scope","resolution_type"]},"ResolveChallengesResult":{"type":"object","properties":{"resolutions":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeResolution"},"description":"The created resolution records."}},"required":["resolutions"]},"Resource":{"type":"object","properties":{"function_resource_definition":{"$ref":"#/components/schemas/FunctionResourceDefinition"}},"description":"A polymorphic resource - currently only function resources are supported"},"ResourceEntry":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the resource"},"name":{"type":"string","description":"The name of the resource"},"resource_urn":{"type":"string","description":"The URN of the resource"},"type":{"type":"string","enum":["function"]},"uri":{"type":"string","description":"The uri of the resource"}},"required":["type","id","name","uri","resource_urn"]},"ResponseFilter":{"type":"object","properties":{"content_types":{"type":"array","items":{"type":"string"},"description":"Content types to filter for"},"status_codes":{"type":"array","items":{"type":"string"},"description":"Status codes to filter for"},"type":{"type":"string","description":"Response filter type for the tool"}},"description":"Response filter metadata for the tool","required":["type","status_codes","content_types"]},"RiskCapabilitiesResult":{"type":"object","properties":{"pi_classifier_enabled":{"type":"boolean","description":"Whether the prompt-injection ML classifier is configured on this server."}},"required":["pi_classifier_enabled"]},"RiskCategoriesResult":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskCategoryDefinition"},"description":"Categories in classification-priority order. The last entry is the 'custom' fallback for findings that match none of the others."}},"description":"Canonical risk category definitions used to classify findings, in classification-priority order. Consumers should iterate in order and pick the first match.","required":["categories"]},"RiskCategoryDefinition":{"type":"object","properties":{"description":{"type":"string","description":"Plain-English description of what this category covers."},"icon":{"type":"string","description":"Lucide icon name suggested for this category."},"key":{"type":"string","description":"Canonical category key (e.g. 'secrets', 'pii', 'shadow_mcp')."},"label":{"type":"string","description":"Human-readable category label for UI rendering."},"rule_id_prefix":{"type":"string","description":"When non-empty, findings whose rule_id starts with this prefix belong to this category. The catch-all for a family (e.g. 'pii.')."},"rule_ids":{"type":"array","items":{"type":"string"},"description":"When non-empty, findings whose rule_id is in this exact list belong to this category. Checked before rule_id_prefix."},"source":{"type":"string","description":"When non-empty, findings whose source equals this value belong to this category."}},"description":"One canonical risk category and how findings are classified into it.","required":["key","label","description","icon","source","rule_ids","rule_id_prefix"]},"RiskChatSummary":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session ID.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"findings_count":{"type":"integer","description":"Number of findings in this chat.","format":"int64"},"latest_detected":{"type":"string","description":"When the most recent finding was detected.","format":"date-time"},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["chat_id","findings_count","latest_detected"]},"RiskOverviewCategory":{"type":"object","properties":{"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category.","format":"int64"}},"required":["category","findings"]},"RiskOverviewResult":{"type":"object","properties":{"active_policies":{"type":"integer","description":"Enabled risk policies for the current project.","format":"int64"},"findings":{"type":"integer","description":"Policy findings in the window.","format":"int64"},"flagged_sessions":{"type":"integer","description":"Chat sessions with at least one finding in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the overview window.","format":"date-time"},"messages_scanned":{"type":"integer","description":"Messages analyzed by risk policies in the window.","format":"int64"},"time_series_findings":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewTimeSeriesFinding"},"description":"Time-series finding counts by category in the window."},"to":{"type":"string","description":"Exclusive end of the overview window.","format":"date-time"},"top_categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Top policy categories by finding count."},"top_rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Top rule_ids by finding count."},"top_users":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewUser"},"description":"Top users by finding count."}},"required":["from","to","messages_scanned","findings","flagged_sessions","active_policies","top_categories","top_users","top_rules","time_series_findings"]},"RiskOverviewTimeSeriesFinding":{"type":"object","properties":{"bucket_start":{"type":"string","description":"Time bucket start.","format":"date-time"},"category":{"type":"string","description":"Policy category key."},"findings":{"type":"integer","description":"Finding count for this category and time bucket.","format":"int64"}},"required":["bucket_start","category","findings"]},"RiskOverviewUser":{"type":"object","properties":{"email":{"type":"string","description":"User email, or Unknown user when unavailable."},"external_user_id":{"type":"string","description":"External user identifier as recorded on chats, when known. Empty when the finding cannot be attributed to an external user."},"findings":{"type":"integer","description":"Finding count for this user.","format":"int64"}},"required":["email","external_user_id","findings"]},"RiskPolicy":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag (log only) or block (deny in real-time).","default":"flag","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name is auto-generated. When true, the name is regenerated on each update."},"created_at":{"type":"string","description":"When the policy was created.","format":"date-time"},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"pending_messages":{"type":"integer","description":"Number of messages not yet analyzed at the current policy version.","format":"int64"},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to scan for. When empty, scans all entities."},"project_id":{"type":"string","description":"The project ID.","format":"uuid"},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids enabled in addition to the heuristic baseline (e.g. 'deberta-v3-classifier'). When empty, only heuristics run."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources enabled for this policy."},"total_messages":{"type":"integer","description":"Total number of messages in the project.","format":"int64"},"updated_at":{"type":"string","description":"When the policy was last updated.","format":"date-time"},"user_message":{"type":"string","description":"Optional message shown to the end user when this policy blocks an action or surfaces a flagged finding. When unset, a default message is rendered."},"version":{"type":"integer","description":"Policy version, incremented on each update.","format":"int64"}},"required":["id","project_id","name","sources","enabled","action","auto_name","version","created_at","updated_at","pending_messages","total_messages"]},"RiskPolicyStatus":{"type":"object","properties":{"analyzed_messages":{"type":"integer","description":"Messages analyzed at the current policy version.","format":"int64"},"findings_count":{"type":"integer","description":"Number of findings at the current policy version.","format":"int64"},"pending_messages":{"type":"integer","description":"Messages not yet analyzed.","format":"int64"},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Current policy version.","format":"int64"},"total_messages":{"type":"integer","description":"Total messages in the project.","format":"int64"},"workflow_status":{"type":"string","description":"Workflow state: running, sleeping, or not_started.","enum":["running","sleeping","not_started"]}},"required":["policy_id","policy_version","total_messages","analyzed_messages","pending_messages","findings_count","workflow_status"]},"RiskResult":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"end_pos":{"type":"integer","description":"End byte position within the message content.","format":"int64"},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match":{"type":"string","description":"The matched secret or sensitive data."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks)."},"start_pos":{"type":"integer","description":"Start byte position within the message content.","format":"int64"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at"]},"RiskResultRedacted":{"type":"object","properties":{"chat_id":{"type":"string","description":"The chat session containing the message.","format":"uuid"},"chat_message_id":{"type":"string","description":"The chat message that was scanned.","format":"uuid"},"chat_title":{"type":"string","description":"Title of the chat session."},"confidence":{"type":"number","description":"Confidence score for this finding.","format":"double"},"created_at":{"type":"string","description":"When this result was created.","format":"date-time"},"description":{"type":"string","description":"Human-readable description of the finding."},"id":{"type":"string","description":"The result ID.","format":"uuid"},"match_redacted":{"type":"string","description":"Opaque fingerprint of the original match in the form `\u003credacted len=N sha=XXXXXXXX\u003e` where N is the byte length of the original match and XXXXXXXX is the first 8 hex characters of sha256(match). For shadow_mcp findings the original match value (a non-sensitive server URL or command identifier) is passed through verbatim."},"policy_id":{"type":"string","description":"The risk policy ID.","format":"uuid"},"policy_version":{"type":"integer","description":"Policy version when this result was produced.","format":"int64"},"position_known":{"type":"boolean","description":"Whether the original finding carried byte-position information within the source message. Exact positions are intentionally not exposed to avoid reconstruction attacks."},"rule_id":{"type":"string","description":"The matched rule identifier."},"source":{"type":"string","description":"Detection source (e.g. gitleaks, presidio, shadow_mcp)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags from the detection rule."},"user_id":{"type":"string","description":"The user who owns the chat session."}},"required":["id","policy_id","policy_version","chat_message_id","source","created_at","match_redacted","position_known"]},"RiskRuleBreakdownEntry":{"type":"object","properties":{"findings":{"type":"integer","description":"Finding count for this rule within the window.","format":"int64"},"rule_id":{"type":"string","description":"Rule identifier (e.g. 'secret.aws-access-key'). Empty when the finding has no rule_id (treat as 'unspecified')."},"source":{"type":"string","description":"Source bucket the rule belongs to (gitleaks, presidio, etc.) for label/icon resolution on the dashboard."}},"required":["rule_id","source","findings"]},"RiskRuleBreakdownResult":{"type":"object","properties":{"category":{"type":"string","description":"Category the breakdown is scoped to."},"from":{"type":"string","description":"Inclusive start of the window used.","format":"date-time"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Rules in this category, ordered by finding count descending."},"to":{"type":"string","description":"Exclusive end of the window used.","format":"date-time"},"total":{"type":"integer","description":"Total findings across all rules in this category and window.","format":"int64"}},"required":["from","to","category","rules","total"]},"RiskUserBreakdownResult":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/RiskOverviewCategory"},"description":"Category breakdown for this user, ordered by finding count descending."},"external_user_id":{"type":"string","description":"External user the breakdown is scoped to."},"findings":{"type":"integer","description":"Total findings for this user in the window.","format":"int64"},"from":{"type":"string","description":"Inclusive start of the window used.","format":"date-time"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/RiskRuleBreakdownEntry"},"description":"Rule_id breakdown for this user, ordered by finding count descending."},"to":{"type":"string","description":"Exclusive end of the window used.","format":"date-time"}},"required":["from","to","external_user_id","findings","categories","rules"]},"Role":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"description":{"type":"string","description":"Human-readable description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Scope grants assigned to this role."},"id":{"type":"string","description":"Unique role identifier."},"is_system":{"type":"boolean","description":"Whether this is a built-in system role that cannot be deleted."},"member_count":{"type":"integer","description":"Number of members assigned to this role.","format":"int64"},"name":{"type":"string","description":"Display name of the role."},"slug":{"type":"string","description":"Stable WorkOS role slug."},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","slug","description","is_system","grants","member_count","created_at","updated_at"]},"RoleGrant":{"type":"object","properties":{"effect":{"type":"string","description":"Whether this grant allows or denies the scope. Defaults to 'allow' when omitted.","default":"allow","enum":["allow","deny"]},"scope":{"type":"string","description":"The scope slug this grant applies to.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]},"selectors":{"type":"array","items":{"$ref":"#/components/schemas/Selector"},"description":"Selector constraints. Null means unrestricted."}},"required":["scope"]},"RoleSummary":{"type":"object","properties":{"cost_per_user":{"type":"number","description":"Average cost per user (total_cost / user_count)","format":"double"},"role_id":{"type":"string","description":"Role identifier extracted from role URN"},"role_name":{"type":"string","description":"Human-readable role name"},"total_chats":{"type":"integer","description":"Total chat sessions across all users","format":"int64"},"total_cost":{"type":"number","description":"Total cost across all users with this role","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens across all users","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens across all users","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens across all users","format":"int64"},"user_count":{"type":"integer","description":"Number of users with this role","format":"int64"}},"description":"Aggregated usage summary for a role","required":["role_id","role_name","user_count","total_cost","cost_per_user","total_input_tokens","total_output_tokens","total_tokens","total_chats"]},"ScopeDefinition":{"type":"object","properties":{"description":{"type":"string","description":"What this scope protects."},"resource_type":{"type":"string","description":"The type of resource this scope applies to.","enum":["org","project","mcp","environment"]},"slug":{"type":"string","description":"Unique scope identifier.","enum":["org:read","org:admin","project:read","project:write","mcp:read","mcp:write","mcp:connect","environment:read","environment:write"]}},"required":["slug","description","resource_type"]},"SearchChatsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching chat sessions"},"SearchChatsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchChatsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching chat session summaries"},"SearchChatsResult":{"type":"object","properties":{"chats":{"type":"array","items":{"$ref":"#/components/schemas/ChatSummary"},"description":"List of chat session summaries"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching chat session summaries","required":["chats"]},"SearchLogsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"external_user_id":{"type":"string","description":"External user ID filter"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_chat_id":{"type":"string","description":"Chat ID filter"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"gram_urns":{"type":"array","items":{"type":"string"},"description":"Gram URN filter (one or more URNs)"},"http_method":{"type":"string","description":"HTTP method filter","enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]},"http_route":{"type":"string","description":"HTTP route filter"},"http_status_code":{"type":"integer","description":"HTTP status code filter","format":"int32"},"service_name":{"type":"string","description":"Service name filter"},"severity_text":{"type":"string","description":"Severity level filter","enum":["DEBUG","INFO","WARN","ERROR","FATAL"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"trace_id":{"type":"string","description":"Trace ID filter (32 hex characters)","pattern":"^[a-f0-9]{32}$"},"user_id":{"type":"string","description":"User ID filter"}},"description":"Filter criteria for searching logs"},"SearchLogsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchLogsFilter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/LogFilter"},"description":"Filter conditions for the search query"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Payload for searching telemetry logs"},"SearchLogsResult":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/TelemetryLogRecord"},"description":"List of telemetry log records"},"next_cursor":{"type":"string","description":"Cursor for next page"}},"description":"Result of searching telemetry logs","required":["logs"]},"SearchToolCallsFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Event source filter (e.g., 'hook', 'tool_call', 'chat_completion')"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for searching tool calls"},"SearchToolCallsPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination"},"filter":{"$ref":"#/components/schemas/SearchToolCallsFilter"},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]}},"description":"Payload for searching tool call summaries"},"SearchToolCallsResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallSummary"},"description":"List of tool call summaries"}},"description":"Result of searching tool call summaries","required":["tool_calls"]},"SearchUsersFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"event_source":{"type":"string","description":"Optional event source filter (e.g. 'hook'). When set, only rows with a matching event_source are included."},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"hook_source":{"type":"string","description":"Optional hook source filter (e.g. 'cursor', 'claude-code')."},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of user identifiers to include. Matches user_id for internal searches and external_user_id for external searches."}},"description":"Filter criteria for searching user usage summaries","required":["from","to"]},"SearchUsersPayload":{"type":"object","properties":{"cursor":{"type":"string","description":"Cursor for pagination (user identifier from last item)"},"filter":{"$ref":"#/components/schemas/SearchUsersFilter"},"group_by":{"type":"string","description":"Grouping dimension for results","default":"employee","enum":["employee","role"]},"limit":{"type":"integer","description":"Number of items to return (1-1000)","default":50,"format":"int64","minimum":1,"maximum":1000},"sort":{"type":"string","description":"Sort order","default":"desc","enum":["asc","desc"]},"user_type":{"type":"string","description":"Type of user identifier to group by","enum":["internal","external"]}},"description":"Payload for searching user usage summaries","required":["filter","user_type"]},"SearchUsersResult":{"type":"object","properties":{"next_cursor":{"type":"string","description":"Cursor for next page"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleSummary"},"description":"List of role usage summaries (populated when group_by=role)"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"},"description":"List of user usage summaries (populated when group_by=employee)"}},"description":"Result of searching user usage summaries","required":["users"]},"SecurityVariable":{"type":"object","properties":{"bearer_format":{"type":"string","description":"The bearer format"},"display_name":{"type":"string","description":"User-friendly display name for the security variable (defaults to name if not set)"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"},"id":{"type":"string","description":"The unique identifier of the security variable"},"in_placement":{"type":"string","description":"Where the security token is placed"},"name":{"type":"string","description":"The name of the security scheme (actual header/parameter name)"},"oauth_flows":{"type":"string","description":"The OAuth flows","format":"binary"},"oauth_types":{"type":"array","items":{"type":"string"},"description":"The OAuth types"},"scheme":{"type":"string","description":"The security scheme"},"type":{"type":"string","description":"The type of security"}},"required":["id","name","in_placement","scheme","env_variables"]},"Selector":{"type":"object","properties":{"disposition":{"type":"string","description":"Tool disposition filter (MCP scopes only).","enum":["read_only","destructive","idempotent","open_world"]},"project_id":{"type":"string","description":"Project filter (MCP scopes only). When set with resource_id='*', grants access to all servers in the project."},"resource_id":{"type":"string","description":"The resource identifier, or '*' for all resources of this kind."},"resource_kind":{"type":"string","description":"The kind of resource this selector targets.","enum":["project","mcp","org","environment","*"]},"tool":{"type":"string","description":"Specific tool name filter (MCP scopes only)."}},"description":"A constraint that narrows which resources a grant applies to.","required":["resource_kind","resource_id"]},"SendInviteRequestBody":{"type":"object","properties":{"email":{"type":"string","description":"Email address to invite."},"role_id":{"type":"string","description":"Optional role ID for the invitee."}},"required":["email"]},"ServeChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"id":{"type":"string","description":"The ID of the attachment to serve"},"project_id":{"type":"string","description":"The project ID that the attachment belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeChatAttachmentResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeChatAttachmentSignedForm":{"type":"object","properties":{"token":{"type":"string","description":"The signed JWT token"}},"required":["token"]},"ServeChatAttachmentSignedResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeFunctionForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeFunctionResult":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeImageForm":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the asset to serve"}},"required":["id"]},"ServeImageResult":{"type":"object","properties":{"access_control_allow_origin":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServeOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"id":{"type":"string","description":"The ID of the asset to serve"},"project_id":{"type":"string","description":"The procect ID that the asset belongs to"},"session_token":{"type":"string"}},"required":["id","project_id"]},"ServeOpenAPIv3Result":{"type":"object","properties":{"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"last_modified":{"type":"string"}},"required":["content_type","content_length","last_modified"]},"ServerNameOverride":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"id":{"type":"string","description":"Override ID"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"description":"User-defined display name for a hooks server","required":["id","raw_server_name","display_name"]},"ServerVariable":{"type":"object","properties":{"description":{"type":"string","description":"Description of the server variable"},"env_variables":{"type":"array","items":{"type":"string"},"description":"The environment variables"}},"required":["description","env_variables"]},"ServiceInfo":{"type":"object","properties":{"name":{"type":"string","description":"Service name"},"version":{"type":"string","description":"Service version"}},"description":"Service information","required":["name"]},"SetMcpMetadataRequestBody":{"type":"object","properties":{"default_environment_id":{"type":"string","description":"The default environment to load variables from","format":"uuid"},"environment_configs":{"type":"array","items":{"$ref":"#/components/schemas/McpEnvironmentConfigInput"},"description":"The list of environment variables to configure for this MCP"},"external_documentation_text":{"type":"string","description":"A blob of text for the button on the MCP server page"},"external_documentation_url":{"type":"string","description":"A link to external documentation for the MCP install page"},"installation_override_url":{"type":"string","description":"URL to redirect to instead of showing the default installation page","format":"uri"},"instructions":{"type":"string","description":"Server instructions returned in the MCP initialize response"},"logo_asset_id":{"type":"string","description":"The asset ID for the MCP install page logo"},"toolset_slug":{"type":"string","description":"The slug of the toolset associated with this install page metadata","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug"]},"SetOrganizationWhitelistRequestBody":{"type":"object","properties":{"organization_id":{"type":"string","description":"The ID of the organization to update"},"whitelisted":{"type":"boolean","description":"Whether the organization should be whitelisted"}},"required":["organization_id","whitelisted"]},"SetPluginAssignmentsForm":{"type":"object","properties":{"plugin_id":{"type":"string","format":"uuid"},"principal_urns":{"type":"array","items":{"type":"string"},"description":"List of principal URNs to assign."}},"required":["plugin_id","principal_urns"]},"SetPluginAssignmentsResponseBody":{"type":"object","properties":{"assignments":{"type":"array","items":{"$ref":"#/components/schemas/PluginAssignment"},"description":"The updated assignments."}},"required":["assignments"]},"SetProductFeatureRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the feature should be enabled"},"feature_name":{"type":"string","description":"Name of the feature to update","enum":["logs","tool_io_logs","session_capture","authz_challenge_logging"],"maxLength":60}},"required":["feature_name","enabled"]},"SetProjectLogoForm":{"type":"object","properties":{"asset_id":{"type":"string","description":"The ID of the asset"}},"required":["asset_id"]},"SetProjectLogoResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"}},"required":["project"]},"SetSourceEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source (http or function)","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"required":["source_kind","source_slug","environment_id"]},"SetToolsetEnvironmentLinkRequestBody":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"required":["toolset_id","environment_id"]},"SetUserSessionIssuerForm":{"type":"object","properties":{"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}},"required":["slug"]},"SetUserSessionIssuerRequestBody":{"type":"object","properties":{"user_session_issuer_id":{"type":"string","description":"The user_session_issuer id to link, or null to unlink.","format":"uuid"}}},"ShadowMCPApproval":{"type":"object","properties":{"approved_at":{"type":"string","description":"When the approval was recorded.","format":"date-time"},"approved_by":{"type":"string","description":"User that recorded the approval."},"match":{"type":"string","description":"The MCP server identifier this approval covers — typically a server URL, stdio command, or `mcp__\u003cserver\u003e__` prefix (the same value surfaced in `RiskResult.match`)."},"policy_id":{"type":"string","description":"The risk policy ID this approval is scoped to.","format":"uuid"},"server_name":{"type":"string","description":"Display name of the MCP server, when known."}},"required":["policy_id","match","approved_at"]},"SkillBreakdownRow":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name"},"use_count":{"type":"integer","description":"Use count for this skill/user combination","format":"int64"},"user_email":{"type":"string","description":"User email address"}},"description":"Per-(skill, user) aggregated counts","required":["skill_name","user_email","use_count"]},"SkillSummary":{"type":"object","properties":{"skill_name":{"type":"string","description":"Skill name (extracted from tool name)"},"unique_users":{"type":"integer","description":"Number of unique users who used this skill","format":"int64"},"use_count":{"type":"integer","description":"Total number of times this skill was used","format":"int64"}},"description":"Aggregated skills metrics for a single skill","required":["skill_name","use_count","unique_users"]},"SkillTimeSeriesPoint":{"type":"object","properties":{"bucket_start_ns":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS int64 precision)"},"event_count":{"type":"integer","description":"Number of skill use events in this bucket","format":"int64"},"skill_name":{"type":"string","description":"Skill name"}},"description":"A single time-series bucket for skill usage activity","required":["bucket_start_ns","skill_name","event_count"]},"SlackAppResult":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"icon_asset_id":{"type":"string","description":"Asset ID for the app icon"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"Display name of the Slack app"},"redirect_url":{"type":"string","description":"OAuth callback URL for this app"},"request_url":{"type":"string","description":"Event subscription URL for this app"},"slack_client_id":{"type":"string","description":"The Slack app Client ID"},"slack_team_id":{"type":"string","description":"The connected Slack workspace ID"},"slack_team_name":{"type":"string","description":"The connected Slack workspace name"},"status":{"type":"string","description":"Current status: unconfigured, active"},"system_prompt":{"type":"string","description":"System prompt for the Slack app"},"toolset_ids":{"type":"array","items":{"type":"string"},"description":"Attached toolset IDs"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","status","toolset_ids","created_at","updated_at"]},"SourceEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the source environment link","format":"uuid"},"source_kind":{"type":"string","description":"The kind of source that can be linked to an environment","enum":["http","function"]},"source_slug":{"type":"string","description":"The slug of the source"}},"description":"A link between a source and an environment","required":["id","source_kind","source_slug","environment_id"]},"SubmitFeedbackRequestBody":{"type":"object","properties":{"feedback":{"type":"string","description":"User feedback: success or failure","enum":["success","failure"]},"id":{"type":"string","description":"The ID of the chat"}},"required":["id","feedback"]},"TelemetryFilter":{"type":"object","properties":{"deployment_id":{"type":"string","description":"Deployment ID filter","format":"uuid"},"from":{"type":"string","description":"Start time in ISO 8601 format (e.g., '2025-12-19T10:00:00Z')","example":"2025-12-19T10:00:00Z","format":"date-time"},"function_id":{"type":"string","description":"Function ID filter","format":"uuid"},"gram_urn":{"type":"string","description":"Gram URN filter (single URN, use gram_urns for multiple)"},"to":{"type":"string","description":"End time in ISO 8601 format (e.g., '2025-12-19T11:00:00Z')","example":"2025-12-19T11:00:00Z","format":"date-time"}},"description":"Filter criteria for telemetry queries"},"TelemetryLogRecord":{"type":"object","properties":{"attributes":{"description":"Log attributes as JSON object"},"body":{"type":"string","description":"The primary log message"},"id":{"type":"string","description":"Log record ID","format":"uuid"},"observed_time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event was observed (string for JS int64 precision)"},"resource_attributes":{"description":"Resource attributes as JSON object"},"service":{"$ref":"#/components/schemas/ServiceInfo"},"severity_text":{"type":"string","description":"Text representation of severity"},"span_id":{"type":"string","description":"W3C span ID (16 hex characters)"},"time_unix_nano":{"type":"string","description":"Unix time in nanoseconds when event occurred (string for JS int64 precision)"},"trace_id":{"type":"string","description":"W3C trace ID (32 hex characters)"}},"description":"OpenTelemetry log record","required":["id","time_unix_nano","observed_time_unix_nano","body","attributes","resource_attributes","service"]},"TierLimits":{"type":"object","properties":{"add_on_bullets":{"type":"array","items":{"type":"string"},"description":"Add-on items bullets of the tier (optional)"},"base_price":{"type":"number","description":"The base price for the tier","format":"double"},"feature_bullets":{"type":"array","items":{"type":"string"},"description":"Key feature bullets of the tier"},"included_bullets":{"type":"array","items":{"type":"string"},"description":"Included items bullets of the tier"},"included_credits":{"type":"integer","description":"The number of credits included in the tier for playground and other dashboard activities","format":"int64"},"included_servers":{"type":"integer","description":"The number of servers included in the tier","format":"int64"},"included_tool_calls":{"type":"integer","description":"The number of tool calls included in the tier","format":"int64"},"price_per_additional_server":{"type":"number","description":"The price per additional server","format":"double"},"price_per_additional_tool_call":{"type":"number","description":"The price per additional tool call","format":"double"}},"required":["base_price","included_tool_calls","included_servers","included_credits","price_per_additional_tool_call","price_per_additional_server","feature_bullets","included_bullets"]},"TimeSeriesBucket":{"type":"object","properties":{"abandoned_chats":{"type":"integer","description":"Abandoned chat sessions in this bucket","format":"int64"},"avg_session_duration_ms":{"type":"number","description":"Average session duration in milliseconds","format":"double"},"avg_tool_latency_ms":{"type":"number","description":"Average tool latency in milliseconds","format":"double"},"bucket_time_unix_nano":{"type":"string","description":"Bucket start time in Unix nanoseconds (string for JS precision)"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens in this bucket","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens in this bucket","format":"int64"},"failed_chats":{"type":"integer","description":"Failed chat sessions in this bucket","format":"int64"},"failed_tool_calls":{"type":"integer","description":"Failed tool calls in this bucket","format":"int64"},"partial_chats":{"type":"integer","description":"Partially resolved chat sessions in this bucket","format":"int64"},"resolved_chats":{"type":"integer","description":"Resolved chat sessions in this bucket","format":"int64"},"total_chats":{"type":"integer","description":"Total chat sessions in this bucket","format":"int64"},"total_cost":{"type":"number","description":"Total cost in this bucket","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens in this bucket","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens in this bucket","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens in this bucket","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total tool calls in this bucket","format":"int64"}},"description":"A single time bucket for time series metrics","required":["bucket_time_unix_nano","total_chats","resolved_chats","failed_chats","partial_chats","abandoned_chats","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","total_tool_calls","failed_tool_calls","avg_tool_latency_ms","avg_session_duration_ms"]},"Tool":{"type":"object","properties":{"external_mcp_tool_definition":{"$ref":"#/components/schemas/ExternalMCPToolDefinition"},"function_tool_definition":{"$ref":"#/components/schemas/FunctionToolDefinition"},"http_tool_definition":{"$ref":"#/components/schemas/HTTPToolDefinition"},"platform_tool_definition":{"$ref":"#/components/schemas/PlatformToolDefinition"},"prompt_template":{"$ref":"#/components/schemas/PromptTemplate"}},"description":"A polymorphic tool - can be an HTTP tool, function tool, prompt template, or external MCP proxy"},"ToolAnnotations":{"type":"object","properties":{"destructive_hint":{"type":"boolean","description":"If true, the tool may perform destructive updates (only meaningful when read_only_hint is false)"},"idempotent_hint":{"type":"boolean","description":"If true, repeated calls with same arguments have no additional effect (only meaningful when read_only_hint is false)"},"open_world_hint":{"type":"boolean","description":"If true, the tool interacts with external entities beyond its local environment"},"read_only_hint":{"type":"boolean","description":"If true, the tool does not modify its environment"},"title":{"type":"string","description":"Human-readable display name for the tool"}},"description":"Tool annotations providing behavioral hints about the tool"},"ToolCallSummary":{"type":"object","properties":{"event_source":{"type":"string","description":"Event source (from attributes.gram.event.source)"},"gram_urn":{"type":"string","description":"Gram URN associated with this tool call"},"http_status_code":{"type":"integer","description":"HTTP status code (if applicable)","format":"int32"},"log_count":{"type":"integer","description":"Total number of logs in this tool call","format":"int64"},"start_time_unix_nano":{"type":"string","description":"Earliest log timestamp in Unix nanoseconds (string for JS int64 precision)"},"tool_name":{"type":"string","description":"Tool name (from attributes.gram.tool.name)"},"tool_source":{"type":"string","description":"Tool call source (from attributes.gram.tool_call.source)"},"trace_id":{"type":"string","description":"Trace ID (32 hex characters)","pattern":"^[a-f0-9]{32}$"}},"description":"Summary information for a tool call","required":["trace_id","start_time_unix_nano","log_count","gram_urn"]},"ToolEntry":{"type":"object","properties":{"annotations":{"$ref":"#/components/schemas/ToolAnnotations"},"http_method":{"type":"string","description":"HTTP method for HTTP tools (GET, POST, PUT, PATCH, DELETE)"},"id":{"type":"string","description":"The ID of the tool"},"name":{"type":"string","description":"The name of the tool"},"tool_urn":{"type":"string","description":"The URN of the tool"},"type":{"type":"string","description":"The type of tool","enum":["http","prompt","function","platform","externalmcp"]}},"required":["type","id","name","tool_urn"]},"ToolMetric":{"type":"object","properties":{"avg_latency_ms":{"type":"number","description":"Average latency in milliseconds","format":"double"},"call_count":{"type":"integer","description":"Total number of calls","format":"int64"},"failure_count":{"type":"integer","description":"Number of failed calls","format":"int64"},"failure_rate":{"type":"number","description":"Failure rate (0.0 to 1.0)","format":"double"},"gram_urn":{"type":"string","description":"Tool URN"},"success_count":{"type":"integer","description":"Number of successful calls","format":"int64"}},"description":"Aggregated metrics for a single tool","required":["gram_urn","call_count","success_count","failure_count","avg_latency_ms","failure_rate"]},"ToolUsage":{"type":"object","properties":{"count":{"type":"integer","description":"Total call count","format":"int64"},"failure_count":{"type":"integer","description":"Failed calls (4xx/5xx status)","format":"int64"},"success_count":{"type":"integer","description":"Successful calls (2xx status)","format":"int64"},"urn":{"type":"string","description":"Tool URN"}},"description":"Tool usage statistics","required":["urn","count","success_count","failure_count"]},"ToolVariation":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation"},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"created_at":{"type":"string","description":"The creation date of the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"group_id":{"type":"string","description":"The ID of the tool variation group"},"id":{"type":"string","description":"The ID of the tool variation"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"},"updated_at":{"type":"string","description":"The last update date of the tool variation"}},"required":["id","group_id","src_tool_name","src_tool_urn","created_at","updated_at"]},"Toolset":{"type":"object","properties":{"account_type":{"type":"string","description":"The account type of the organization"},"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"external_oauth_server":{"$ref":"#/components/schemas/ExternalOAuthServer"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"oauth_enablement_metadata":{"$ref":"#/components/schemas/OAuthEnablementMetadata"},"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServer"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplate"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/Resource"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"},"description":"The tools in this toolset"},"toolset_version":{"type":"integer","description":"The version of the toolset (will be 0 if none exists)","format":"int64"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The id of the user_session_issuer wired to this toolset. Set via toolsets.setUserSessionIssuer; null when no USI is linked."},"user_session_issuer_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["id","project_id","organization_id","account_type","name","slug","tools","tool_selection_mode","toolset_version","prompt_templates","tool_urns","resources","resource_urns","oauth_enablement_metadata","created_at","updated_at"]},"ToolsetEntry":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"Description of the toolset"},"external_mcp_header_definitions":{"type":"array","items":{"$ref":"#/components/schemas/ExternalMCPHeaderDefinition"},"description":"The external MCP header definitions that are relevant to the toolset"},"function_environment_variables":{"type":"array","items":{"$ref":"#/components/schemas/FunctionEnvironmentVariable"},"description":"The function environment variables that are relevant to the toolset"},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"origin":{"$ref":"#/components/schemas/ToolsetOrigin"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"prompt_templates":{"type":"array","items":{"$ref":"#/components/schemas/PromptTemplateEntry"},"description":"The prompt templates in this toolset -- Note: these are actual prompts, as in MCP prompts"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"The resource URNs in this toolset"},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEntry"},"description":"The resources in this toolset"},"security_variables":{"type":"array","items":{"$ref":"#/components/schemas/SecurityVariable"},"description":"The security variables that are relevant to the toolset"},"server_variables":{"type":"array","items":{"$ref":"#/components/schemas/ServerVariable"},"description":"The server variables that are relevant to the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"The tool URNs in this toolset"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"required":["id","project_id","organization_id","name","slug","tools","tool_selection_mode","prompt_templates","tool_urns","resources","resource_urns","created_at","updated_at"]},"ToolsetEnvironmentLink":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment","format":"uuid"},"id":{"type":"string","description":"The ID of the toolset environment link","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset","format":"uuid"}},"description":"A link between a toolset and an environment","required":["id","toolset_id","environment_id"]},"ToolsetOrigin":{"type":"object","properties":{"registry_specifier":{"type":"string","description":"The globally unique registry specifier this toolset originated from"}},"required":["registry_specifier"]},"ToolsetSummary":{"type":"object","properties":{"created_at":{"type":"string","description":"When the toolset was created.","format":"date-time"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"id":{"type":"string","description":"The ID of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The name of the toolset"},"organization_id":{"type":"string","description":"The organization ID this toolset belongs to"},"project_id":{"type":"string","description":"The project ID this toolset belongs to"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolEntry"},"description":"The tools in this toolset"},"updated_at":{"type":"string","description":"When the toolset was last updated.","format":"date-time"}},"description":"A lightweight summary of a toolset, containing only the fields needed for org-level listing (e.g. RBAC UI).","required":["id","project_id","organization_id","name","slug","tool_selection_mode","tools","created_at","updated_at"]},"TopServer":{"type":"object","properties":{"server_name":{"type":"string","description":"MCP server name"},"tool_call_count":{"type":"integer","description":"Total number of tool calls","format":"int64"}},"description":"Top MCP server by tool call count","required":["server_name","tool_call_count"]},"TopUser":{"type":"object","properties":{"activity_count":{"type":"integer","description":"Number of messages (session mode) or tool calls (tool_call mode)","format":"int64"},"user_id":{"type":"string","description":"User ID (internal or external depending on availability)"},"user_type":{"type":"string","description":"Type of user ID","enum":["internal","external"]}},"description":"Top user by activity","required":["user_id","user_type","activity_count"]},"TriggerDefinition":{"type":"object","properties":{"config_schema":{"type":"string","description":"JSON schema describing the trigger config.","format":"json"},"description":{"type":"string","description":"Description of the trigger definition."},"env_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TriggerEnvRequirement"},"description":"Environment variables required by this trigger definition."},"kind":{"type":"string","description":"The ingress kind for the trigger definition.","enum":["webhook","schedule"]},"slug":{"type":"string","description":"The trigger definition slug."},"title":{"type":"string","description":"The trigger definition title."}},"required":["slug","title","description","kind","config_schema","env_requirements"]},"TriggerEnvRequirement":{"type":"object","properties":{"description":{"type":"string","description":"Description of the variable."},"name":{"type":"string","description":"The environment variable name."},"required":{"type":"boolean","description":"Whether the variable is required."}},"required":["name","required"]},"TriggerInstance":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"created_at":{"type":"string","description":"Creation timestamp.","format":"date-time"},"definition_slug":{"type":"string","description":"The trigger definition slug."},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"project_id":{"type":"string","description":"The project ID owning the trigger instance.","format":"uuid"},"status":{"type":"string","description":"The trigger instance status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The target kind for the trigger instance."},"target_ref":{"type":"string","description":"The opaque target reference."},"updated_at":{"type":"string","description":"Last update timestamp.","format":"date-time"},"webhook_url":{"type":"string","description":"Webhook URL for webhook-backed triggers."}},"required":["id","project_id","definition_slug","name","target_kind","target_ref","target_display","config","status","created_at","updated_at"]},"TriggerRiskAnalysisRequestBody":{"type":"object","properties":{"id":{"type":"string","description":"The policy ID.","format":"uuid"},"limit":{"type":"integer","description":"Cap the backfill at the most recent N unanalyzed messages. Defaults to 100 (the recent-N drain budget). Pass 0 to request a full backfill of every unanalyzed message.","default":100,"format":"int32","minimum":0}},"required":["id"]},"UpdateAssistantForm":{"type":"object","properties":{"id":{"type":"string","description":"The assistant ID.","format":"uuid"},"instructions":{"type":"string","description":"The system instructions for the assistant."},"max_concurrency":{"type":"integer","description":"Maximum active warm runtimes.","format":"int64"},"model":{"type":"string","description":"The model identifier used by the assistant."},"name":{"type":"string","description":"The assistant name."},"status":{"type":"string","description":"The assistant status.","enum":["active","paused"]},"toolsets":{"type":"array","items":{"$ref":"#/components/schemas/AssistantToolsetRef"},"description":"Toolsets available to the assistant."},"warm_ttl_seconds":{"type":"integer","description":"Warm runtime TTL in seconds.","format":"int64"}},"required":["id"]},"UpdateEnvironmentForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"description":"Form for updating an environment","required":["slug","entries_to_update","entries_to_remove"]},"UpdateEnvironmentRequestBody":{"type":"object","properties":{"description":{"type":"string","description":"The description of the environment"},"entries_to_remove":{"type":"array","items":{"type":"string"},"description":"List of environment entry names to remove"},"entries_to_update":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentEntryInput"},"description":"List of environment entries to update or create"},"name":{"type":"string","description":"The name of the environment"}},"required":["entries_to_update","entries_to_remove"]},"UpdateInviteRoleRequestBody":{"type":"object","properties":{"invitation_id":{"type":"string","description":"WorkOS invitation ID."},"role_id":{"type":"string","description":"Role ID to assign to the invitee."}},"required":["invitation_id","role_id"]},"UpdateMcpEndpointForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to register the endpoint slug under. Omit to move the endpoint to a platform domain.","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP endpoint to update","format":"uuid"},"mcp_server_id":{"type":"string","description":"The ID of the MCP server this endpoint addresses","format":"uuid"},"slug":{"type":"string","description":"A url-friendly label (up to 128 characters) that addresses an MCP server through a slug-based URL. Platform-domain slugs (no custom domain) must be prefixed with the organization slug.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":128}},"description":"Form for updating an MCP endpoint. This is a full-record replace: the custom_domain_id field omitted from the request becomes null on the stored record. Platform-domain endpoint slugs (no custom_domain_id) must be prefixed with the organization slug.","required":["id","mcp_server_id","slug"]},"UpdateMcpServerForm":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment to associate with the server","format":"uuid"},"id":{"type":"string","description":"The ID of the MCP server to update","format":"uuid"},"name":{"type":"string","description":"A human-readable display name for the server. Omit to leave the existing name unchanged; if provided, must be non-empty."},"remote_mcp_server_id":{"type":"string","description":"The ID of the remote MCP server to use as the backend","format":"uuid"},"toolset_id":{"type":"string","description":"The ID of the toolset to use as the backend","format":"uuid"},"user_session_issuer_id":{"type":"string","description":"The ID of the user session issuer that gates OAuth-based MCP client authentication. Omit to disable issuer-gated OAuth.","format":"uuid"},"visibility":{"type":"string","description":"The visibility of an MCP server","enum":["disabled","private","public"]}},"description":"Form for updating an MCP server. This is a full-record replace: fields omitted from the request become null on the stored record. Exactly one of remote_mcp_server_id or toolset_id must be provided. Omit name to leave the existing display name unchanged; the slug is recomputed server-side from the resulting name.","required":["id","visibility"]},"UpdateMemberRolesForm":{"type":"object","properties":{"role_ids":{"type":"array","items":{"type":"string"},"description":"The role IDs to assign. Replaces all existing role assignments."},"user_id":{"type":"string","description":"The user ID to update."}},"required":["user_id","role_ids"]},"UpdateOAuthProxyServerForm":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"},"project_slug_input":{"type":"string"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["slug","oauth_proxy_server"]},"UpdateOAuthProxyServerRequestBody":{"type":"object","properties":{"oauth_proxy_server":{"$ref":"#/components/schemas/OAuthProxyServerUpdateForm"}},"required":["oauth_proxy_server"]},"UpdateOrganizationRequestBody":{"type":"object","properties":{"account_type":{"type":"string","description":"New gram_account_type (e.g. free, pro, enterprise)."},"id":{"type":"string","description":"Organization ID."},"whitelisted":{"type":"boolean","description":"New whitelisted flag."}},"required":["id"]},"UpdatePackageForm":{"type":"object","properties":{"description":{"type":"string","description":"The description of the package. Limited markdown syntax is supported.","maxLength":10000},"id":{"type":"string","description":"The id of the package to update","maxLength":50},"image_asset_id":{"type":"string","description":"The asset ID of the image to show for this package","maxLength":50},"keywords":{"type":"array","items":{"type":"string"},"description":"The keywords of the package","maxItems":5},"summary":{"type":"string","description":"The summary of the package","maxLength":80},"title":{"type":"string","description":"The title of the package","maxLength":100},"url":{"type":"string","description":"External URL for the package owner","maxLength":100}},"required":["id"]},"UpdatePackageResult":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"UpdatePluginForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Updated display name."},"slug":{"type":"string","description":"Updated slug."}},"required":["id","name","slug"]},"UpdatePluginServerForm":{"type":"object","properties":{"display_name":{"type":"string"},"id":{"type":"string","format":"uuid"},"plugin_id":{"type":"string","format":"uuid"},"policy":{"type":"string","default":"required","enum":["required","optional"]},"sort_order":{"type":"integer","default":0,"format":"int32"}},"required":["id","plugin_id","display_name"]},"UpdatePromptTemplateForm":{"type":"object","properties":{"arguments":{"type":"string","description":"The JSON Schema defining the placeholders found in the prompt template","format":"json"},"description":{"type":"string","description":"The description of the prompt template"},"engine":{"type":"string","description":"The template engine","enum":["mustache"]},"id":{"type":"string","description":"The ID of the prompt template to update"},"kind":{"type":"string","description":"The kind of prompt the template is used for","enum":["prompt","higher_order_tool"]},"name":{"type":"string","description":"The name of the prompt template. Will be updated via variation"},"prompt":{"type":"string","description":"The template content"},"tool_urns_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool URNS associated with the prompt template","maxItems":20},"tools_hint":{"type":"array","items":{"type":"string"},"description":"The suggested tool names associated with the prompt template","maxItems":20}},"required":["id"]},"UpdatePromptTemplateResult":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/PromptTemplate"}},"required":["template"]},"UpdateRemoteSessionClientForm":{"type":"object","properties":{"audience":{"type":"string","description":"Replace the upstream OAuth audience sent for this client. Omit to leave unchanged.","pattern":"^[!-~]+$","maxLength":512},"client_secret":{"type":"string","description":"Rotate the client secret. Gram re-encrypts before persisting."},"id":{"type":"string","description":"The remote_session_client id.","format":"uuid"},"scope":{"type":"array","items":{"type":"string","pattern":"^[!#-[\\]-~]+$","maxLength":128},"description":"Replace the explicit upstream OAuth scopes for this client. Omit to leave unchanged."},"token_endpoint_auth_method":{"type":"string","description":"Change how the client authenticates at the issuer's token endpoint.","enum":["client_secret_basic","client_secret_post"]},"user_session_issuer_id":{"type":"string","description":"Re-pair with a different user_session_issuer.","format":"uuid"}},"description":"Form for updating a remote_session_client. All non-id fields are optional patches.","required":["id"]},"UpdateRemoteSessionIssuerForm":{"type":"object","properties":{"authorization_endpoint":{"type":"string","description":"Upstream authorization endpoint."},"grant_types_supported":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"The remote_session_issuer id.","format":"uuid"},"issuer":{"type":"string","description":"Issuer URL; matches the iss claim."},"jwks_uri":{"type":"string","description":"Upstream JWKS URI."},"oidc":{"type":"boolean"},"passthrough":{"type":"boolean"},"registration_endpoint":{"type":"string","description":"Upstream RFC 7591 registration endpoint."},"response_types_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"slug":{"type":"string","description":"Rename the slug."},"token_endpoint":{"type":"string","description":"Upstream token endpoint."},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}}},"description":"Form for updating a remote_session_issuer. All non-id fields are optional patches.","required":["id"]},"UpdateRequestBody":{"type":"object","properties":{"collection_id":{"type":"string","description":"ID of the collection to update","format":"uuid"},"description":{"type":"string","description":"Description of the collection","maxLength":500},"name":{"type":"string","description":"Display name for the collection","minLength":1,"maxLength":100},"visibility":{"type":"string","description":"Visibility of the collection","enum":["public","private"]}},"required":["collection_id"]},"UpdateRiskPolicyRequestBody":{"type":"object","properties":{"action":{"type":"string","description":"Policy action: flag or block.","enum":["flag","block"]},"auto_name":{"type":"boolean","description":"Whether the policy name should be auto-generated."},"enabled":{"type":"boolean","description":"Whether the policy is active."},"id":{"type":"string","description":"The policy ID.","format":"uuid"},"name":{"type":"string","description":"The policy name."},"presidio_entities":{"type":"array","items":{"type":"string"},"description":"Presidio entity types to detect."},"prompt_injection_rules":{"type":"array","items":{"type":"string"},"description":"Prompt-injection detection rule ids to enable in addition to the heuristic baseline (e.g. 'deberta-v3-classifier')."},"sources":{"type":"array","items":{"type":"string"},"description":"Detection sources to enable."},"user_message":{"type":"string","description":"Optional message shown to end users when this policy blocks an action or surfaces a flagged finding. Send an empty string to clear."}},"required":["id","name"]},"UpdateRoleForm":{"type":"object","properties":{"description":{"type":"string","description":"Updated description."},"grants":{"type":"array","items":{"$ref":"#/components/schemas/RoleGrant"},"description":"Updated scope grants."},"id":{"type":"string","description":"The ID of the role to update."},"member_ids":{"type":"array","items":{"type":"string"},"description":"Optional member IDs to additionally assign to this role. Existing assignments are preserved."},"name":{"type":"string","description":"Updated display name."}},"required":["id"]},"UpdateSecurityVariableDisplayNameForm":{"type":"object","properties":{"display_name":{"type":"string","description":"The user-friendly display name. Set to empty string to clear and use the original name.","maxLength":120},"project_slug_input":{"type":"string"},"security_key":{"type":"string","description":"The security scheme key (e.g., 'BearerAuth', 'ApiKeyAuth') from the OpenAPI spec","maxLength":60},"toolset_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40}},"required":["toolset_slug","security_key","display_name"]},"UpdateServerForm":{"type":"object","properties":{"headers":{"type":"array","items":{"$ref":"#/components/schemas/HeaderInput"},"description":"The complete desired set of headers. Omit to leave headers unchanged. Provide an empty array to remove all headers."},"id":{"type":"string","description":"The ID of the remote MCP server to update"},"name":{"type":"string","description":"Optional human-readable name. Pass an empty string to clear the existing name."},"transport_type":{"type":"string","description":"The transport type for the remote MCP server"},"url":{"type":"string","description":"The URL of the remote MCP server","format":"uri"}},"description":"Form for updating a remote MCP server. When headers is provided, it represents the complete desired set of headers — any existing headers not in the list will be removed.","required":["id"]},"UpdateSlackAppRequestBody":{"type":"object","properties":{"icon_asset_id":{"type":"string","description":"Asset ID for the app icon","format":"uuid"},"id":{"type":"string","description":"The Slack app ID","format":"uuid"},"name":{"type":"string","description":"New display name for the Slack app","minLength":1,"maxLength":36},"system_prompt":{"type":"string","description":"System prompt for the Slack app"}},"required":["id"]},"UpdateToolsetForm":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"project_slug_input":{"type":"string"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"slug":{"type":"string","description":"A short url-friendly label that uniquely identifies a resource.","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}},"required":["slug"]},"UpdateToolsetRequestBody":{"type":"object","properties":{"custom_domain_id":{"type":"string","description":"The ID of the custom domain to use for the toolset"},"default_environment_slug":{"type":"string","description":"The slug of the environment to use as the default for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"description":{"type":"string","description":"The new description of the toolset"},"mcp_enabled":{"type":"boolean","description":"Whether the toolset is enabled for MCP"},"mcp_is_public":{"type":"boolean","description":"Whether the toolset is public in MCP"},"mcp_slug":{"type":"string","description":"The slug of the MCP to use for the toolset","pattern":"^[a-z0-9_-]{1,128}$","maxLength":40},"name":{"type":"string","description":"The new name of the toolset"},"prompt_template_names":{"type":"array","items":{"type":"string"},"description":"List of prompt template names to include (note: for actual prompts, not tools)"},"resource_urns":{"type":"array","items":{"type":"string"},"description":"List of resource URNs to include in the toolset"},"tool_selection_mode":{"type":"string","description":"The mode to use for tool selection"},"tool_urns":{"type":"array","items":{"type":"string"},"description":"List of tool URNs to include in the toolset"}}},"UpdateTriggerInstanceForm":{"type":"object","properties":{"config":{"type":"object","description":"The trigger config payload.","additionalProperties":true},"environment_id":{"type":"string","description":"The linked environment ID.","format":"uuid"},"id":{"type":"string","description":"The trigger instance ID.","format":"uuid"},"name":{"type":"string","description":"The trigger instance name."},"status":{"type":"string","description":"The trigger status.","enum":["active","paused"]},"target_display":{"type":"string","description":"The user-facing target display value."},"target_kind":{"type":"string","description":"The trigger target kind.","enum":["assistant","noop"]},"target_ref":{"type":"string","description":"The opaque target reference."}},"required":["id"]},"UpdateUserSessionIssuerForm":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive.","enum":["chain","interactive"]},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Rename the slug."}},"description":"Form for updating a user_session_issuer. All non-id fields are optional patches.","required":["id"]},"UploadChatAttachmentForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"chat_sessions_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadChatAttachmentResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"},"url":{"type":"string","description":"The URL to serve the chat attachment"}},"required":["asset","url"]},"UploadFunctionsForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadFunctionsResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadImageForm":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadImageResult":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UploadOpenAPIv3Form":{"type":"object","properties":{"apikey_token":{"type":"string"},"content_length":{"type":"integer","format":"int64"},"content_type":{"type":"string"},"project_slug_input":{"type":"string"},"session_token":{"type":"string"}},"required":["content_type","content_length"]},"UploadOpenAPIv3Result":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/Asset"}},"required":["asset"]},"UpsertAllowedOriginForm":{"type":"object","properties":{"origin":{"type":"string","description":"The origin URL to upsert","minLength":1,"maxLength":500},"status":{"type":"string","default":"pending","enum":["pending","approved","rejected"]}},"required":["origin"]},"UpsertAllowedOriginResult":{"type":"object","properties":{"allowed_origin":{"$ref":"#/components/schemas/AllowedOrigin"}},"required":["allowed_origin"]},"UpsertConfigRequestBody":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether forwarding should be active."},"endpoint_url":{"type":"string","description":"URL to forward OTEL payloads to."},"headers":{"type":"array","items":{"$ref":"#/components/schemas/OtelForwardingHeaderInput"},"description":"Full set of headers to attach. Replaces any existing headers."}},"required":["endpoint_url","enabled"]},"UpsertGlobalToolVariationForm":{"type":"object","properties":{"confirm":{"type":"string","description":"The confirmation mode for the tool variation","enum":["always","never","session"]},"confirm_prompt":{"type":"string","description":"The confirmation prompt for the tool variation"},"description":{"type":"string","description":"The description of the tool variation"},"destructive_hint":{"type":"boolean","description":"Override: if true, the tool may perform destructive updates"},"idempotent_hint":{"type":"boolean","description":"Override: if true, repeated calls have no additional effect"},"name":{"type":"string","description":"The name of the tool variation"},"open_world_hint":{"type":"boolean","description":"Override: if true, the tool interacts with external entities"},"read_only_hint":{"type":"boolean","description":"Override: if true, the tool does not modify its environment"},"src_tool_name":{"type":"string","description":"The name of the source tool"},"src_tool_urn":{"type":"string","description":"The URN of the source tool"},"summarizer":{"type":"string","description":"The summarizer of the tool variation"},"summary":{"type":"string","description":"The summary of the tool variation"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the tool variation"},"title":{"type":"string","description":"Display name override for the tool"}},"required":["src_tool_name","src_tool_urn"]},"UpsertGlobalToolVariationResult":{"type":"object","properties":{"variation":{"$ref":"#/components/schemas/ToolVariation"}},"required":["variation"]},"UpsertRequestBody":{"type":"object","properties":{"display_name":{"type":"string","description":"User-friendly display name"},"raw_server_name":{"type":"string","description":"Original server name from hooks"}},"required":["raw_server_name","display_name"]},"UsageTiers":{"type":"object","properties":{"enterprise":{"$ref":"#/components/schemas/TierLimits"},"free":{"$ref":"#/components/schemas/TierLimits"},"pro":{"$ref":"#/components/schemas/TierLimits"}},"required":["free","pro","enterprise"]},"UserSession":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","description":"Terminal session expiry; ceiling on refresh_expires_at.","format":"date-time"},"id":{"type":"string","description":"The user_session id.","format":"uuid"},"jti":{"type":"string","description":"Current access-token JTI; used by the revocation path."},"refresh_expires_at":{"type":"string","description":"Next refresh deadline.","format":"date-time"},"subject_urn":{"type":"string","description":"The session's subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The issuing user_session_issuer id.","format":"uuid"}},"description":"An issued user_session record. refresh_token_hash is never returned.","required":["id","user_session_issuer_id","subject_urn","jti","refresh_expires_at","expires_at","created_at","updated_at"]},"UserSessionClient":{"type":"object","properties":{"client_id":{"type":"string","description":"DCR-issued client_id."},"client_id_issued_at":{"type":"string","format":"date-time"},"client_name":{"type":"string","description":"Display name from the registration request."},"client_secret_expires_at":{"type":"string","description":"Null when the secret does not expire.","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_client id.","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"},"description":"Validated on every /authorize."},"updated_at":{"type":"string","format":"date-time"},"user_session_issuer_id":{"type":"string","description":"The owning user_session_issuer id.","format":"uuid"}},"description":"A user_session_client (DCR'd MCP client). client_secret_hash is never returned.","required":["id","user_session_issuer_id","client_id","client_name","redirect_uris","client_id_issued_at","created_at","updated_at"]},"UserSessionConsent":{"type":"object","properties":{"consented_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_consent id.","format":"uuid"},"remote_set_hash":{"type":"string","description":"SHA-256 of the sorted list of remote_session_issuer ids on the client's owning issuer at consent time."},"subject_urn":{"type":"string","description":"The consenting subject URN (user:\u003cid\u003e | apikey:\u003cuuid\u003e | anonymous:\u003cmcp-session-id\u003e)."},"updated_at":{"type":"string","format":"date-time"},"user_session_client_id":{"type":"string","description":"The user_session_client this consent binds to.","format":"uuid"}},"description":"A user_session_consent record. Per-client (not per-issuer) consent.","required":["id","subject_urn","user_session_client_id","remote_set_hash","consented_at","created_at","updated_at"]},"UserSessionIssuer":{"type":"object","properties":{"authn_challenge_mode":{"type":"string","description":"chain | interactive."},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","description":"The user_session_issuer id.","format":"uuid"},"project_id":{"type":"string","description":"The owning project id.","format":"uuid"},"session_duration_hours":{"type":"integer","description":"Issued user session lifetime, in hours.","format":"int64"},"slug":{"type":"string","description":"Project-unique slug."},"updated_at":{"type":"string","format":"date-time"}},"description":"A user_session_issuer record.","required":["id","project_id","slug","authn_challenge_mode","session_duration_hours","created_at","updated_at"]},"UserSummary":{"type":"object","properties":{"avg_tokens_per_request":{"type":"number","description":"Average tokens per chat request","format":"double"},"cache_creation_input_tokens":{"type":"integer","description":"Sum of cache creation input tokens","format":"int64"},"cache_read_input_tokens":{"type":"integer","description":"Sum of cache read input tokens","format":"int64"},"first_seen_unix_nano":{"type":"string","description":"Earliest activity timestamp in Unix nanoseconds"},"hook_sources":{"type":"array","items":{"$ref":"#/components/schemas/HookSourceUsage"},"description":"Per-hook-source usage breakdown"},"last_seen_unix_nano":{"type":"string","description":"Latest activity timestamp in Unix nanoseconds"},"tool_call_failure":{"type":"integer","description":"Failed tool calls (4xx/5xx status)","format":"int64"},"tool_call_success":{"type":"integer","description":"Successful tool calls (2xx status)","format":"int64"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"},"description":"Per-tool usage breakdown"},"total_chat_requests":{"type":"integer","description":"Total number of chat completion requests","format":"int64"},"total_chats":{"type":"integer","description":"Number of unique chat sessions","format":"int64"},"total_cost":{"type":"number","description":"Total cost of all requests","format":"double"},"total_input_tokens":{"type":"integer","description":"Sum of input tokens used","format":"int64"},"total_output_tokens":{"type":"integer","description":"Sum of output tokens used","format":"int64"},"total_tokens":{"type":"integer","description":"Sum of all tokens used","format":"int64"},"total_tool_calls":{"type":"integer","description":"Total number of tool calls","format":"int64"},"user_id":{"type":"string","description":"User identifier (user_id or external_user_id depending on group_by)"}},"description":"Aggregated usage summary for a single user","required":["user_id","first_seen_unix_nano","last_seen_unix_nano","total_chats","total_chat_requests","total_input_tokens","total_output_tokens","total_tokens","cache_read_input_tokens","cache_creation_input_tokens","total_cost","avg_tokens_per_request","total_tool_calls","tool_call_success","tool_call_failure","tools","hook_sources"]},"ValidateKeyOrganization":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the organization"},"name":{"type":"string","description":"The name of the organization"},"slug":{"type":"string","description":"The slug of the organization"}},"required":["id","name","slug"]},"ValidateKeyProject":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"slug":{"type":"string","description":"The slug of the project"}},"required":["id","name","slug"]},"ValidateKeyResult":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/ValidateKeyOrganization"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/ValidateKeyProject"},"description":"The projects accessible with this key"},"scopes":{"type":"array","items":{"type":"string"},"description":"List of permission scopes for this key"}},"required":["organization","projects","scopes"]},"VerifyURLForm":{"type":"object","properties":{"transport_type":{"type":"string","description":"The transport type for the remote MCP server (e.g. streamable-http)"},"url":{"type":"string","description":"The URL of the remote MCP server to probe","format":"uri"}},"description":"Form for probing a remote MCP server URL","required":["url","transport_type"]},"VerifyURLResult":{"type":"object","properties":{"http_status":{"type":"integer","description":"HTTP status code returned by the URL, if any","format":"int64"},"message":{"type":"string","description":"Human-readable summary of the verification outcome"},"verified":{"type":"boolean","description":"Whether the URL responded in a way consistent with a remote MCP server"}},"description":"Outcome of a remote MCP server URL verification","required":["verified","message"]}},"securitySchemes":{"admin_auth_header_Authorization":{"type":"apiKey","description":"Admin session auth for admin endpoints. Cookie-only credential; session is validated against Google on every request.","name":"Authorization","in":"header"},"apikey_header_Authorization":{"type":"apiKey","description":"key based auth.","name":"Authorization","in":"header"},"apikey_header_Gram-Key":{"type":"apiKey","description":"key based auth.","name":"Gram-Key","in":"header"},"chat_sessions_token_header_Gram-Chat-Session":{"type":"http","description":"Gram Chat Sessions token based auth.","scheme":"bearer"},"function_token_header_Authorization":{"type":"http","description":"Gram Functions token based auth.","scheme":"bearer"},"project_slug_header_Gram-Project":{"type":"apiKey","description":"project slug header auth.","name":"Gram-Project","in":"header"},"session_header_Gram-Session":{"type":"apiKey","description":"Session based auth. By cookie or header.","name":"Gram-Session","in":"header"}}},"tags":[{"name":"access","description":"Manage roles, team member access control, and authorization challenge events."},{"name":"admin","description":"Operations supporting admin tasks, protected by Google workspace auth."},{"name":"assets","description":"Manages assets used by Gram projects."},{"name":"assistantMemories","description":"Manage assistant memory records."},{"name":"assistants","description":"Manage assistants and their runtime configuration."},{"name":"auditlogs","description":"Manages audit logs in Gram."},{"name":"auth","description":"Managed auth for gram producers and dashboard."},{"name":"chat","description":"Managed chats for gram AI consumers."},{"name":"chatSessions","description":"Manages chat session tokens for client-side authentication"},{"name":"deployments","description":"Manages deployments of tools from upstream sources."},{"name":"domains","description":"Manage custom domains for gram."},{"name":"environments","description":"Managing toolset environments."},{"name":"mcpRegistries","description":"External MCP registry operations"},{"name":"collections","description":"MCP collection operations"},{"name":"functions","description":"Endpoints for working with functions."},{"name":"hooksServerNames","description":"Manages display name overrides for hooks servers."},{"name":"hooks","description":"Receives hook events from coding assistants for tool usage observability."},{"name":"instances","description":"Consumer APIs for interacting with all relevant data for an instance of a toolset and environment."},{"name":"integrations","description":"Explore third-party tools in Gram."},{"name":"keys","description":"Managing system api keys."},{"name":"mcpEndpoints","description":"Managing MCP endpoints, the url-friendly slug identifiers that address MCP servers."},{"name":"mcpMetadata","description":"Manages metadata for the MCP install page shown to users."},{"name":"mcpServers","description":"Managing MCP servers, which configure authentication, environment, and backend selection for an MCP server."},{"name":"organizations","description":"Organization membership, invitations, and directory."},{"name":"otelForwarding","description":"Manage per-organization forwarding of inbound OTEL hook payloads to a customer-owned endpoint."},{"name":"packages","description":"Manages packages in Gram."},{"name":"plugins","description":"Manage distributable plugin bundles of MCP servers and hooks."},{"name":"features","description":"Manage product level feature controls."},{"name":"projects","description":"Manages projects in Gram."},{"name":"remoteMcp","description":"Managing remote MCP servers."},{"name":"remoteSessionClients","description":"Manage remote_session_client records — credentials Gram uses when acting as an OAuth client of a remote_session_issuer. client_secret_encrypted is never returned."},{"name":"remoteSessionIssuers","description":"Manage remote_session_issuer records — upstream Authorization Server identity records that Gram talks to as an OAuth client."},{"name":"remoteSessions","description":"Operator visibility into remote_sessions Gram is holding on a principal's behalf. Read + revoke; sessions are written by /mcp/{slug}/remote_login_callback and the silent-refresh path. access_token_encrypted and refresh_token_encrypted are never returned."},{"name":"resources","description":"Dashboard API for interacting with resources."},{"name":"risk","description":"Manage risk analysis policies and view scan results."},{"name":"slack","description":"Auth and interactions for the Gram Slack App."},{"name":"telemetry","description":"Fetch telemetry data for tools in Gram."},{"name":"templates","description":"Manages re-usable prompt templates and higher-order tools for a project."},{"name":"tools","description":"Dashboard API for interacting with tools."},{"name":"toolsets","description":"Managed toolsets for gram AI consumers."},{"name":"triggers","description":"Manage project trigger instances and static trigger definitions."},{"name":"usage","description":"Read usage for gram."},{"name":"userSessionClients","description":"Operator visibility into DCR'd MCP clients (user_session_clients). Read + revoke; registrations are written by /mcp/{slug}/register."},{"name":"userSessionConsents","description":"Operator visibility into user_session_consents — persistent consent records per (subject, user_session_client). List + revoke."},{"name":"userSessionIssuers","description":"Manage user_session_issuer records — Gram-side authorization-server configuration that issues user sessions for an MCP server."},{"name":"userSessions","description":"Operator visibility into issued user_sessions. List + revoke; sessions are written by /mcp/{slug}/token."},{"name":"variations","description":"Manage variations of tools."},{"name":"external","description":"Endpoints for external services to interact with gram."}]} \ No newline at end of file diff --git a/server/gen/http/openapi3.yaml b/server/gen/http/openapi3.yaml index 80a8898614..5fcd504639 100644 --- a/server/gen/http/openapi3.yaml +++ b/server/gen/http/openapi3.yaml @@ -20438,6 +20438,43 @@ paths: description: Optional chat ID to filter by. format: uuid type: string + - allowEmptyValue: true + description: Optional rule category key to filter by (e.g. secrets, pii, financial). + in: query + name: category + schema: + description: Optional rule category key to filter by (e.g. secrets, pii, financial). + type: string + - allowEmptyValue: true + description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + in: query + name: rule_id + schema: + description: Optional rule identifier substring to filter by (case-insensitive, e.g. 'secret' matches all 'secret.*' rules). + type: string + - allowEmptyValue: true + description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. + in: query + name: unique_match + schema: + description: If true, collapse results to one row per (policy_id, rule_id, match), keeping the most recent occurrence. Useful when the same secret is detected many times within a single message body. + type: boolean + - allowEmptyValue: true + description: Filter results to messages created at or after this timestamp (ISO 8601). + in: query + name: from + schema: + description: Filter results to messages created at or after this timestamp (ISO 8601). + format: date-time + type: string + - allowEmptyValue: true + description: Filter results to messages created strictly before this timestamp (ISO 8601). + in: query + name: to + schema: + description: Filter results to messages created strictly before this timestamp (ISO 8601). + format: date-time + type: string - allowEmptyValue: true description: Cursor to fetch the next page of results. in: query diff --git a/server/gen/http/risk/client/cli.go b/server/gen/http/risk/client/cli.go index 46fc3cfc4a..a6664121a0 100644 --- a/server/gen/http/risk/client/cli.go +++ b/server/gen/http/risk/client/cli.go @@ -421,7 +421,7 @@ func BuildListRiskResultsPayload(riskListRiskResultsPolicyID string, riskListRis // BuildListRiskResultsForAgentPayload builds the payload for the risk // listRiskResultsForAgent endpoint from CLI flags. -func BuildListRiskResultsForAgentPayload(riskListRiskResultsForAgentPolicyID string, riskListRiskResultsForAgentChatID string, riskListRiskResultsForAgentCursor string, riskListRiskResultsForAgentLimit string, riskListRiskResultsForAgentApikeyToken string, riskListRiskResultsForAgentSessionToken string, riskListRiskResultsForAgentProjectSlugInput string) (*risk.ListRiskResultsForAgentPayload, error) { +func BuildListRiskResultsForAgentPayload(riskListRiskResultsForAgentPolicyID string, riskListRiskResultsForAgentChatID string, riskListRiskResultsForAgentCategory string, riskListRiskResultsForAgentRuleID string, riskListRiskResultsForAgentUniqueMatch string, riskListRiskResultsForAgentFrom string, riskListRiskResultsForAgentTo string, riskListRiskResultsForAgentCursor string, riskListRiskResultsForAgentLimit string, riskListRiskResultsForAgentApikeyToken string, riskListRiskResultsForAgentSessionToken string, riskListRiskResultsForAgentProjectSlugInput string) (*risk.ListRiskResultsForAgentPayload, error) { var err error var policyID *string { @@ -443,6 +443,49 @@ func BuildListRiskResultsForAgentPayload(riskListRiskResultsForAgentPolicyID str } } } + var category *string + { + if riskListRiskResultsForAgentCategory != "" { + category = &riskListRiskResultsForAgentCategory + } + } + var ruleID *string + { + if riskListRiskResultsForAgentRuleID != "" { + ruleID = &riskListRiskResultsForAgentRuleID + } + } + var uniqueMatch *bool + { + if riskListRiskResultsForAgentUniqueMatch != "" { + var val bool + val, err = strconv.ParseBool(riskListRiskResultsForAgentUniqueMatch) + uniqueMatch = &val + if err != nil { + return nil, fmt.Errorf("invalid value for uniqueMatch, must be BOOL") + } + } + } + var from *string + { + if riskListRiskResultsForAgentFrom != "" { + from = &riskListRiskResultsForAgentFrom + err = goa.MergeErrors(err, goa.ValidateFormat("from", *from, goa.FormatDateTime)) + if err != nil { + return nil, err + } + } + } + var to *string + { + if riskListRiskResultsForAgentTo != "" { + to = &riskListRiskResultsForAgentTo + err = goa.MergeErrors(err, goa.ValidateFormat("to", *to, goa.FormatDateTime)) + if err != nil { + return nil, err + } + } + } var cursor *string { if riskListRiskResultsForAgentCursor != "" { @@ -491,6 +534,11 @@ func BuildListRiskResultsForAgentPayload(riskListRiskResultsForAgentPolicyID str v := &risk.ListRiskResultsForAgentPayload{} v.PolicyID = policyID v.ChatID = chatID + v.Category = category + v.RuleID = ruleID + v.UniqueMatch = uniqueMatch + v.From = from + v.To = to v.Cursor = cursor v.Limit = limit v.ApikeyToken = apikeyToken diff --git a/server/gen/http/risk/client/encode_decode.go b/server/gen/http/risk/client/encode_decode.go index 49700b9f18..a6a214fdde 100644 --- a/server/gen/http/risk/client/encode_decode.go +++ b/server/gen/http/risk/client/encode_decode.go @@ -1759,6 +1759,21 @@ func EncodeListRiskResultsForAgentRequest(encoder func(*http.Request) goahttp.En if p.ChatID != nil { values.Add("chat_id", *p.ChatID) } + if p.Category != nil { + values.Add("category", *p.Category) + } + if p.RuleID != nil { + values.Add("rule_id", *p.RuleID) + } + if p.UniqueMatch != nil { + values.Add("unique_match", fmt.Sprintf("%v", *p.UniqueMatch)) + } + if p.From != nil { + values.Add("from", *p.From) + } + if p.To != nil { + values.Add("to", *p.To) + } if p.Cursor != nil { values.Add("cursor", *p.Cursor) } diff --git a/server/gen/http/risk/server/encode_decode.go b/server/gen/http/risk/server/encode_decode.go index eda0fe5591..cb493b6953 100644 --- a/server/gen/http/risk/server/encode_decode.go +++ b/server/gen/http/risk/server/encode_decode.go @@ -1702,6 +1702,11 @@ func DecodeListRiskResultsForAgentRequest(mux goahttp.Muxer, decoder func(*http. var ( policyID *string chatID *string + category *string + ruleID *string + uniqueMatch *bool + from *string + to *string cursor *string limit *int apikeyToken *string @@ -1724,6 +1729,38 @@ func DecodeListRiskResultsForAgentRequest(mux goahttp.Muxer, decoder func(*http. if chatID != nil { err = goa.MergeErrors(err, goa.ValidateFormat("chat_id", *chatID, goa.FormatUUID)) } + categoryRaw := qp.Get("category") + if categoryRaw != "" { + category = &categoryRaw + } + ruleIDRaw := qp.Get("rule_id") + if ruleIDRaw != "" { + ruleID = &ruleIDRaw + } + { + uniqueMatchRaw := qp.Get("unique_match") + if uniqueMatchRaw != "" { + v, err2 := strconv.ParseBool(uniqueMatchRaw) + if err2 != nil { + err = goa.MergeErrors(err, goa.InvalidFieldTypeError("unique_match", uniqueMatchRaw, "boolean")) + } + uniqueMatch = &v + } + } + fromRaw := qp.Get("from") + if fromRaw != "" { + from = &fromRaw + } + if from != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("from", *from, goa.FormatDateTime)) + } + toRaw := qp.Get("to") + if toRaw != "" { + to = &toRaw + } + if to != nil { + err = goa.MergeErrors(err, goa.ValidateFormat("to", *to, goa.FormatDateTime)) + } cursorRaw := qp.Get("cursor") if cursorRaw != "" { cursor = &cursorRaw @@ -1764,7 +1801,7 @@ func DecodeListRiskResultsForAgentRequest(mux goahttp.Muxer, decoder func(*http. if err != nil { return payload, err } - payload = NewListRiskResultsForAgentPayload(policyID, chatID, cursor, limit, apikeyToken, sessionToken, projectSlugInput) + payload = NewListRiskResultsForAgentPayload(policyID, chatID, category, ruleID, uniqueMatch, from, to, cursor, limit, apikeyToken, sessionToken, projectSlugInput) if payload.ApikeyToken != nil { if strings.Contains(*payload.ApikeyToken, " ") { // Remove authorization scheme prefix (e.g. "Bearer") diff --git a/server/gen/http/risk/server/types.go b/server/gen/http/risk/server/types.go index 1ed2fe4862..cb7d2d3ed7 100644 --- a/server/gen/http/risk/server/types.go +++ b/server/gen/http/risk/server/types.go @@ -7015,10 +7015,15 @@ func NewListRiskResultsPayload(policyID *string, chatID *string, category *strin // NewListRiskResultsForAgentPayload builds a risk service // listRiskResultsForAgent endpoint payload. -func NewListRiskResultsForAgentPayload(policyID *string, chatID *string, cursor *string, limit *int, apikeyToken *string, sessionToken *string, projectSlugInput *string) *risk.ListRiskResultsForAgentPayload { +func NewListRiskResultsForAgentPayload(policyID *string, chatID *string, category *string, ruleID *string, uniqueMatch *bool, from *string, to *string, cursor *string, limit *int, apikeyToken *string, sessionToken *string, projectSlugInput *string) *risk.ListRiskResultsForAgentPayload { v := &risk.ListRiskResultsForAgentPayload{} v.PolicyID = policyID v.ChatID = chatID + v.Category = category + v.RuleID = ruleID + v.UniqueMatch = uniqueMatch + v.From = from + v.To = to v.Cursor = cursor v.Limit = limit v.ApikeyToken = apikeyToken diff --git a/server/gen/risk/service.go b/server/gen/risk/service.go index 45e7b11df5..6844281296 100644 --- a/server/gen/risk/service.go +++ b/server/gen/risk/service.go @@ -270,6 +270,19 @@ type ListRiskResultsForAgentPayload struct { PolicyID *string // Optional chat ID to filter by. ChatID *string + // Optional rule category key to filter by (e.g. secrets, pii, financial). + Category *string + // Optional rule identifier substring to filter by (case-insensitive, e.g. + // 'secret' matches all 'secret.*' rules). + RuleID *string + // If true, collapse results to one row per (policy_id, rule_id, match), + // keeping the most recent occurrence. Useful when the same secret is detected + // many times within a single message body. + UniqueMatch *bool + // Filter results to messages created at or after this timestamp (ISO 8601). + From *string + // Filter results to messages created strictly before this timestamp (ISO 8601). + To *string // Cursor to fetch the next page of results. Cursor *string // Maximum number of results to return per page. diff --git a/server/internal/risk/impl.go b/server/internal/risk/impl.go index 26b6043ef7..1d5146ca9c 100644 --- a/server/internal/risk/impl.go +++ b/server/internal/risk/impl.go @@ -725,6 +725,11 @@ func (s *Service) ListRiskResultsForAgent(ctx context.Context, payload *gen.List ProjectSlugInput: payload.ProjectSlugInput, PolicyID: payload.PolicyID, ChatID: payload.ChatID, + Category: payload.Category, + RuleID: payload.RuleID, + UniqueMatch: payload.UniqueMatch, + From: payload.From, + To: payload.To, Cursor: payload.Cursor, Limit: payload.Limit, })